diff --git a/mozilla/camino/resources/application/all-camino.js.in b/mozilla/camino/resources/application/all-camino.js.in index 8f79737b1bd..70d0771e2ae 100644 --- a/mozilla/camino/resources/application/all-camino.js.in +++ b/mozilla/camino/resources/application/all-camino.js.in @@ -236,6 +236,9 @@ pref("browser.safebrowsing.provider.0.reportPhishURL", "http://{moz:locale}.phis // Location to more information about the safe browsing feature pref("browser.safebrowsing.warning.infoURL", "http://en-us.www.mozilla.com/en-US/firefox/phishing-protection/"); +// URL for checking the reason for a malware warning. +pref("browser.safebrowsing.malware.reportURL", "http://safebrowsing.clients.google.com/safebrowsing/diagnostic?client={moz:client}&hl={moz:locale}&site="); + // Name of the about: page contributed by safebrowsing to handle display of error // pages on phishing/malware hits. pref("urlclassifier.alternate_error_page", "safebrowsingblocked"); diff --git a/mozilla/camino/src/browser/BrowserWindowController.mm b/mozilla/camino/src/browser/BrowserWindowController.mm index 6954a9cdd50..e001487dfbc 100644 --- a/mozilla/camino/src/browser/BrowserWindowController.mm +++ b/mozilla/camino/src/browser/BrowserWindowController.mm @@ -84,6 +84,7 @@ #import "ToolbarScriptItem.h" #import "SearchEngineManager.h" #import "SearchEngineEditor.h" +#import "CmXULAppInfo.h" // For search plugin description keys: #import "XMLSearchPluginParser.h" @@ -5166,6 +5167,30 @@ public: [self loadURL:blockingInformationURL referrer:nil focusContent:YES allowPopups:NO]; } +- (void)showMalwareDiagnosticInformation +{ + NSString *malwareDiagnosticURL = + [[PreferenceManager sharedInstance] getStringPref:kGeckoPrefSafeBrowsingMalwareDiagnosticURL + withSuccess:NULL]; + NSString *locale = + [[PreferenceManager sharedInstance] getStringPref:kGeckoPrefUserAgentLocale + withSuccess:NULL]; + + // Fill in certain URL parameter tokens with values. + NSMutableString *filledURL = [[malwareDiagnosticURL mutableCopy] autorelease]; + [filledURL replaceOccurrencesOfString:@"{moz:client}" + withString:[XULAppInfo name] + options:NULL + range:NSMakeRange(0, [filledURL length])]; + [filledURL replaceOccurrencesOfString:@"{moz:locale}" + withString:locale + options:NULL + range:NSMakeRange(0, [filledURL length])]; + [filledURL appendString:[mBrowserView currentURI]]; + + [self loadURL:filledURL referrer:nil focusContent:YES allowPopups:NO]; +} + @end #pragma mark - diff --git a/mozilla/camino/src/browser/BrowserWrapper.h b/mozilla/camino/src/browser/BrowserWrapper.h index d5c5a7f5bde..32d125dc085 100644 --- a/mozilla/camino/src/browser/BrowserWrapper.h +++ b/mozilla/camino/src/browser/BrowserWrapper.h @@ -86,6 +86,7 @@ extern NSString* const kBrowserInstanceClosedNotification; // Called when the user clicks buttons on the about:safebrowsingblocked error page. - (void)runAwayFromSafeBrowsingBlockedSite; - (void)showSafeBrowsingInformation; +- (void)showMalwareDiagnosticInformation; @end diff --git a/mozilla/camino/src/browser/BrowserWrapper.mm b/mozilla/camino/src/browser/BrowserWrapper.mm index 3ea3e488108..562084806c5 100644 --- a/mozilla/camino/src/browser/BrowserWrapper.mm +++ b/mozilla/camino/src/browser/BrowserWrapper.mm @@ -1103,9 +1103,12 @@ static FlashblockWhitelistManager* sFlashblockWhitelistManager = nil; allowPopups:NO]; } else if ([elementIdentifier isEqualToString:@"whyBlockedButton"]) { - // Note: pageURI can be examined for e=phishingBlocked or e=malwareBlocked - // to customize the blocking info location for each case... - [mDelegate showSafeBrowsingInformation]; + // Examine pageURI for e=phishingBlocked or e=malwareBlocked + // to customize the blocking info location for each case. + if ([pageURI rangeOfString:@"e=malwareBlocked"].location != NSNotFound) + [mDelegate showMalwareDiagnosticInformation]; + else // e=phishingBlocked + [mDelegate showSafeBrowsingInformation]; } } } diff --git a/mozilla/camino/src/preferences/GeckoPrefConstants.h b/mozilla/camino/src/preferences/GeckoPrefConstants.h index badb8ff0b91..3d4364f9aed 100644 --- a/mozilla/camino/src/preferences/GeckoPrefConstants.h +++ b/mozilla/camino/src/preferences/GeckoPrefConstants.h @@ -322,6 +322,7 @@ extern NSString* const kGeckoPrefSafeBrowsingDataProviderReportURL; // strin extern NSString* const kGeckoPrefSafeBrowsingDataProviderGetHashURL; // string extern const char* const kGeckoPrefSafeBrowsingInformationURL; // string +extern const char* const kGeckoPrefSafeBrowsingMalwareDiagnosticURL; // string extern const char* const kGeckoPrefSafeBrowsingPhishingCheckingEnabled; // bool extern const char* const kGeckoPrefSafeBrowsingMalwareCheckingEnabled; // bool extern const char* const kGeckoPrefSafeBrowsingDataProvider; // int diff --git a/mozilla/camino/src/preferences/GeckoPrefConstants.mm b/mozilla/camino/src/preferences/GeckoPrefConstants.mm index daecedddf58..68efcd061be 100644 --- a/mozilla/camino/src/preferences/GeckoPrefConstants.mm +++ b/mozilla/camino/src/preferences/GeckoPrefConstants.mm @@ -209,6 +209,7 @@ NSString* const kGeckoPrefSafeBrowsingDataProviderReportURL = @"browser.safebrow NSString* const kGeckoPrefSafeBrowsingDataProviderGetHashURL = @"browser.safebrowsing.provider.%i.gethashURL"; const char* const kGeckoPrefSafeBrowsingInformationURL = "browser.safebrowsing.warning.infoURL"; +const char* const kGeckoPrefSafeBrowsingMalwareDiagnosticURL = "browser.safebrowsing.malware.reportURL"; const char* const kGeckoPrefSafeBrowsingPhishingCheckingEnabled = "browser.safebrowsing.enabled"; const char* const kGeckoPrefSafeBrowsingMalwareCheckingEnabled = "browser.safebrowsing.malware.enabled"; const char* const kGeckoPrefSafeBrowsingDataProvider = "browser.safebrowsing.dataProvider";