| Index: chrome/browser/safe_browsing/safe_browsing_blocking_page.cc
|
| diff --git a/chrome/browser/safe_browsing/safe_browsing_blocking_page.cc b/chrome/browser/safe_browsing/safe_browsing_blocking_page.cc
|
| index ee7e9e1488d1b59742c1ee1ed68024a2acfba992..7d6373c36cfcc5a187d8265da8feda44488ea26e 100644
|
| --- a/chrome/browser/safe_browsing/safe_browsing_blocking_page.cc
|
| +++ b/chrome/browser/safe_browsing/safe_browsing_blocking_page.cc
|
| @@ -117,19 +117,6 @@ const char kDisplayCheckBox[] = "displaycheckbox";
|
| base::LazyInstance<SafeBrowsingBlockingPage::UnsafeResourceMap>
|
| g_unsafe_resource_map = LAZY_INSTANCE_INITIALIZER;
|
|
|
| -// These are the conditions for the summer 2013 Finch experiment.
|
| -// TODO(felt): Get rid of these now that experiment has ended.
|
| -const char kMalwareStudyName[] = "InterstitialMalware310";
|
| -const char kPhishingStudyName[] = "InterstitialPhishing564";
|
| -const char kCond7MalwareFearMsg[] = "cond7MalwareFearMsg";
|
| -const char kCond8PhishingFearMsg[] = "cond8PhishingFearMsg";
|
| -const char kCond9MalwareCollabMsg[] = "cond9MalwareCollabMsg";
|
| -const char kCond10PhishingCollabMsg[] = "cond10PhishingCollabMsg";
|
| -const char kCond11MalwareQuestion[] = "cond11MalwareQuestion";
|
| -const char kCond12PhishingQuestion[] = "cond12PhishingQuestion";
|
| -const char kCond13MalwareGoBack[] = "cond13MalwareGoBack";
|
| -const char kCond14PhishingGoBack[] = "cond14PhishingGoBack";
|
| -
|
| // This enum is used for a histogram. Don't reorder, delete, or insert
|
| // elements. New elements should be added before MAX_ACTION only.
|
| enum DetailedDecision {
|
| @@ -150,19 +137,58 @@ void RecordDetailedUserAction(DetailedDecision decision) {
|
| MAX_DETAILED_ACTION);
|
| }
|
|
|
| -// These are the constants for the M37 Finch trial.
|
| -const char kV3StudyName[] = "MalwareInterstitialVersion";
|
| -const char kCondUseV2[] = "V2";
|
| -
|
| -// Default to V3 unless a flag or field trial says otherwise.
|
| -bool Version3Enabled() {
|
| +// Constants for the M37 Finch trial.
|
| +const char kV3StudyName[] = "MalwareInterstitialVersion";
|
| +const char kCondV2[] = "V2";
|
| +const char kCondV3[] = "V3";
|
| +const char kCondV3Advice[] = "V3Advice";
|
| +const char kCondV3Social[] = "V3Social";
|
| +const char kCondV3NotRecommend[] = "V3NotRecommend";
|
| +const char kCondV3History[] = "V3History";
|
| +
|
| +// Default to V3 unless a flag or field trial says otherwise. Flags override
|
| +// field trial settings.
|
| +const char* GetTrialCondition() {
|
| if (CommandLine::ForCurrentProcess()->HasSwitch(
|
| - switches::kMalwareInterstitialVersionV2)) {
|
| - return false;
|
| + switches::kMalwareInterstitialV2)) {
|
| + return kCondV2;
|
| }
|
| - if (base::FieldTrialList::FindFullName(kV3StudyName) == kCondUseV2)
|
| - return false;
|
| - return true;
|
| + if (CommandLine::ForCurrentProcess()->HasSwitch(
|
| + switches::kMalwareInterstitialV3)) {
|
| + return kCondV3;
|
| + }
|
| + if (CommandLine::ForCurrentProcess()->HasSwitch(
|
| + switches::kMalwareInterstitialV3Advice)) {
|
| + return kCondV3Advice;
|
| + }
|
| + if (CommandLine::ForCurrentProcess()->HasSwitch(
|
| + switches::kMalwareInterstitialV3Social)) {
|
| + return kCondV3Social;
|
| + }
|
| + if (CommandLine::ForCurrentProcess()->HasSwitch(
|
| + switches::kMalwareInterstitialV3NotRecommend)) {
|
| + return kCondV3NotRecommend;
|
| + }
|
| + if (CommandLine::ForCurrentProcess()->HasSwitch(
|
| + switches::kMalwareInterstitialV3History)) {
|
| + return kCondV3History;
|
| + }
|
| +
|
| + // Make sure that the return value is one of the expected types instead of
|
| + // directly returning base::FieldTrialList::FindFullName.
|
| + if (base::FieldTrialList::FindFullName(kV3StudyName) == kCondV2)
|
| + return kCondV2;
|
| + if (base::FieldTrialList::FindFullName(kV3StudyName) == kCondV3)
|
| + return kCondV3;
|
| + if (base::FieldTrialList::FindFullName(kV3StudyName) == kCondV3Advice)
|
| + return kCondV3Advice;
|
| + if (base::FieldTrialList::FindFullName(kV3StudyName) == kCondV3Social)
|
| + return kCondV3Social;
|
| + if (base::FieldTrialList::FindFullName(kV3StudyName) == kCondV3NotRecommend)
|
| + return kCondV3NotRecommend;
|
| + if (base::FieldTrialList::FindFullName(kV3StudyName) == kCondV3History)
|
| + return kCondV3History;
|
| + return kCondV3;
|
| }
|
|
|
| } // namespace
|
| @@ -190,11 +216,11 @@ class SafeBrowsingBlockingPageFactoryImpl
|
| unsafe_resources[0].threat_type == SB_THREAT_TYPE_URL_PHISHING ||
|
| unsafe_resources[0].threat_type ==
|
| SB_THREAT_TYPE_CLIENT_SIDE_PHISHING_URL)) {
|
| - if (Version3Enabled()) {
|
| - return new SafeBrowsingBlockingPageV3(ui_manager, web_contents,
|
| + if (GetTrialCondition() == kCondV2) {
|
| + return new SafeBrowsingBlockingPageV2(ui_manager, web_contents,
|
| unsafe_resources);
|
| } else {
|
| - return new SafeBrowsingBlockingPageV2(ui_manager, web_contents,
|
| + return new SafeBrowsingBlockingPageV3(ui_manager, web_contents,
|
| unsafe_resources);
|
| }
|
| }
|
| @@ -1041,18 +1067,6 @@ SafeBrowsingBlockingPageV2::SafeBrowsingBlockingPageV2(
|
| WebContents* web_contents,
|
| const UnsafeResourceList& unsafe_resources)
|
| : SafeBrowsingBlockingPage(ui_manager, web_contents, unsafe_resources) {
|
| - if (unsafe_resources_[0].threat_type == SB_THREAT_TYPE_URL_MALWARE ||
|
| - unsafe_resources_[0].threat_type ==
|
| - SB_THREAT_TYPE_CLIENT_SIDE_MALWARE_URL) {
|
| - trialCondition_ =
|
| - base::FieldTrialList::FindFullName(kMalwareStudyName);
|
| - } else if (unsafe_resources_[0].threat_type ==
|
| - SB_THREAT_TYPE_URL_PHISHING ||
|
| - unsafe_resources_[0].threat_type ==
|
| - SB_THREAT_TYPE_CLIENT_SIDE_PHISHING_URL) {
|
| - trialCondition_ =
|
| - base::FieldTrialList::FindFullName(kPhishingStudyName);
|
| - }
|
| }
|
|
|
| std::string SafeBrowsingBlockingPageV2::GetHTMLContents() {
|
| @@ -1110,36 +1124,6 @@ void SafeBrowsingBlockingPageV2::PopulateStringDictionary(
|
| IDS_SAFE_BROWSING_MALWARE_V2_SEE_MORE));
|
| strings->SetString("proceed",
|
| l10n_util::GetStringUTF16(IDS_SAFE_BROWSING_MALWARE_V2_PROCEED_LINK));
|
| -
|
| - // Field trial
|
| - strings->SetString("trialType", trialCondition_);
|
| - if (trialCondition_ == kCond7MalwareFearMsg) {
|
| - strings->SetString("headLine",
|
| - l10n_util::GetStringUTF16(IDS_SAFE_BROWSING_MALWARE_FEAR_HEADLINE));
|
| - } else if (trialCondition_ == kCond8PhishingFearMsg) {
|
| - strings->SetString("headLine",
|
| - l10n_util::GetStringUTF16(IDS_SAFE_BROWSING_PHISHING_FEAR_HEADLINE));
|
| - } else if (trialCondition_ == kCond9MalwareCollabMsg) {
|
| - strings->SetString("headLine",
|
| - l10n_util::GetStringUTF16(IDS_SAFE_BROWSING_MALWARE_COLLAB_HEADLINE));
|
| - } else if (trialCondition_ == kCond10PhishingCollabMsg) {
|
| - strings->SetString("headLine",
|
| - l10n_util::GetStringUTF16(IDS_SAFE_BROWSING_PHISHING_COLLAB_HEADLINE));
|
| - } else if (trialCondition_ == kCond11MalwareQuestion) {
|
| - strings->SetString("headLine",
|
| - l10n_util::GetStringUTF16(IDS_SAFE_BROWSING_MALWARE_QUESTION_HEADLINE));
|
| - } else if (trialCondition_ == kCond12PhishingQuestion) {
|
| - strings->SetString("headLine",
|
| - l10n_util::GetStringUTF16(
|
| - IDS_SAFE_BROWSING_PHISHING_QUESTION_HEADLINE));
|
| - } else if (trialCondition_ == kCond13MalwareGoBack) {
|
| - strings->SetString("headLine",
|
| - l10n_util::GetStringUTF16(IDS_SAFE_BROWSING_MALWARE_BACK_HEADLINE));
|
| - } else if (trialCondition_ == kCond14PhishingGoBack) {
|
| - strings->SetString("headLine",
|
| - l10n_util::GetStringUTF16(IDS_SAFE_BROWSING_PHISHING_BACK_HEADLINE));
|
| - }
|
| -
|
| webui::SetFontAndTextDirection(strings);
|
| }
|
|
|
| @@ -1253,7 +1237,8 @@ SafeBrowsingBlockingPageV3::SafeBrowsingBlockingPageV3(
|
| SafeBrowsingUIManager* ui_manager,
|
| WebContents* web_contents,
|
| const UnsafeResourceList& unsafe_resources)
|
| - : SafeBrowsingBlockingPage(ui_manager, web_contents, unsafe_resources) {
|
| + : SafeBrowsingBlockingPage(ui_manager, web_contents, unsafe_resources),
|
| + trial_condition_(GetTrialCondition()) {
|
| }
|
|
|
| std::string SafeBrowsingBlockingPageV3::GetHTMLContents() {
|
| @@ -1310,25 +1295,64 @@ std::string SafeBrowsingBlockingPageV3::GetHTMLContents() {
|
|
|
| void SafeBrowsingBlockingPageV3::PopulateMalwareLoadTimeData(
|
| base::DictionaryValue* load_time_data) {
|
| + load_time_data->SetString("trialCondition", trial_condition_);
|
| load_time_data->SetBoolean("phishing", false);
|
| load_time_data->SetString(
|
| "heading", l10n_util::GetStringUTF16(IDS_MALWARE_V3_HEADING));
|
| load_time_data->SetString(
|
| "primaryParagraph",
|
| l10n_util::GetStringUTF16(IDS_MALWARE_V3_PRIMARY_PARAGRAPH));
|
| - load_time_data->SetString(
|
| - "explanationParagraph",
|
| - is_main_frame_load_blocked_ ?
|
| - l10n_util::GetStringFUTF16(
|
| - IDS_MALWARE_V3_EXPLANATION_PARAGRAPH,
|
| - base::UTF8ToUTF16(url_.host())) :
|
| - l10n_util::GetStringFUTF16(
|
| - IDS_MALWARE_V3_EXPLANATION_PARAGRAPH_SUBRESOURCE,
|
| - base::UTF8ToUTF16(web_contents_->GetURL().host()),
|
| - base::UTF8ToUTF16(url_.host())));
|
| - load_time_data->SetString(
|
| - "finalParagraph",
|
| - l10n_util::GetStringUTF16(IDS_MALWARE_V3_PROCEED_PARAGRAPH));
|
| + if (trial_condition_ == kCondV3History) {
|
| + load_time_data->SetString(
|
| + "explanationParagraph",
|
| + is_main_frame_load_blocked_ ?
|
| + l10n_util::GetStringFUTF16(
|
| + IDS_MALWARE_V3_EXPLANATION_PARAGRAPH_HISTORY,
|
| + base::UTF8ToUTF16(url_.host())) :
|
| + l10n_util::GetStringFUTF16(
|
| + IDS_MALWARE_V3_EXPLANATION_PARAGRAPH_SUBRESOURCE_HISTORY,
|
| + base::UTF8ToUTF16(web_contents_->GetURL().host()),
|
| + base::UTF8ToUTF16(url_.host())));
|
| + } else if (trial_condition_ == kCondV3Advice) {
|
| + load_time_data->SetString(
|
| + "explanationParagraph",
|
| + is_main_frame_load_blocked_ ?
|
| + l10n_util::GetStringFUTF16(
|
| + IDS_MALWARE_V3_EXPLANATION_PARAGRAPH_ADVICE,
|
| + base::UTF8ToUTF16(url_.host())) :
|
| + l10n_util::GetStringFUTF16(
|
| + IDS_MALWARE_V3_EXPLANATION_PARAGRAPH_SUBRESOURCE_ADVICE,
|
| + base::UTF8ToUTF16(web_contents_->GetURL().host()),
|
| + base::UTF8ToUTF16(url_.host())));
|
| + load_time_data->SetString(
|
| + "adviceHeading",
|
| + l10n_util::GetStringUTF16(IDS_MALWARE_V3_ADVICE_HEADING));
|
| + } else {
|
| + load_time_data->SetString(
|
| + "explanationParagraph",
|
| + is_main_frame_load_blocked_ ?
|
| + l10n_util::GetStringFUTF16(
|
| + IDS_MALWARE_V3_EXPLANATION_PARAGRAPH,
|
| + base::UTF8ToUTF16(url_.host())) :
|
| + l10n_util::GetStringFUTF16(
|
| + IDS_MALWARE_V3_EXPLANATION_PARAGRAPH_SUBRESOURCE,
|
| + base::UTF8ToUTF16(web_contents_->GetURL().host()),
|
| + base::UTF8ToUTF16(url_.host())));
|
| + }
|
| + if (trial_condition_ == kCondV3Social) {
|
| + load_time_data->SetString(
|
| + "finalParagraph",
|
| + l10n_util::GetStringUTF16(IDS_MALWARE_V3_PROCEED_PARAGRAPH_SOCIAL));
|
| + } else if (trial_condition_ == kCondV3NotRecommend) {
|
| + load_time_data->SetString(
|
| + "finalParagraph",
|
| + l10n_util::GetStringUTF16(
|
| + IDS_MALWARE_V3_PROCEED_PARAGRAPH_NOT_RECOMMEND));
|
| + } else {
|
| + load_time_data->SetString(
|
| + "finalParagraph",
|
| + l10n_util::GetStringUTF16(IDS_MALWARE_V3_PROCEED_PARAGRAPH));
|
| + }
|
|
|
| load_time_data->SetBoolean(kDisplayCheckBox, CanShowMalwareDetailsOption());
|
| if (CanShowMalwareDetailsOption()) {
|
| @@ -1357,6 +1381,7 @@ void SafeBrowsingBlockingPageV3::PopulateMalwareLoadTimeData(
|
|
|
| void SafeBrowsingBlockingPageV3::PopulatePhishingLoadTimeData(
|
| base::DictionaryValue* load_time_data) {
|
| + load_time_data->SetString("trialCondition", std::string());
|
| load_time_data->SetBoolean("phishing", true);
|
| load_time_data->SetString(
|
| "heading",
|
|
|