Chromium Code Reviews| 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 81c3f2a116fdd9cee692ebffd320a0c4f6fadf70..c5da2a63daaef77efbf7a52d89ac42fb7d3de403 100644 |
| --- a/chrome/browser/safe_browsing/safe_browsing_blocking_page.cc |
| +++ b/chrome/browser/safe_browsing/safe_browsing_blocking_page.cc |
| @@ -22,6 +22,7 @@ |
| #include "base/time/time.h" |
| #include "base/values.h" |
| #include "chrome/browser/browser_process.h" |
| +#include "chrome/browser/extensions/api/experience_sampling_private/experience_sampling.h" |
| #include "chrome/browser/history/history_service_factory.h" |
| #include "chrome/browser/profiles/profile.h" |
| #include "chrome/browser/renderer_preferences_util.h" |
| @@ -53,6 +54,7 @@ using content::InterstitialPage; |
| using content::OpenURLParams; |
| using content::Referrer; |
| using content::WebContents; |
| +using extensions::ExperienceSamplingEvent; |
| namespace { |
| @@ -114,6 +116,13 @@ const char kNavigatedAwayMetaCommand[] = "closed"; |
| const char kBoxChecked[] = "boxchecked"; |
| const char kDisplayCheckBox[] = "displaycheckbox"; |
| +// Constants for the Experience Sampling instrumentation. |
| +const char kEventNameMalware[] = "safebrowsing_interstitial_"; |
| +const char kEventNamePhishing[] = "phishing_interstitial_"; |
| +const char kEventNameMalwareAndPhishing[] = |
| + "malware_and_phishing_interstitial_"; |
| +const char kEventNameOther[] = "safebrowsing_other_instertitial_"; |
|
palmer
2014/07/25 18:05:00
Typo: Should be "interstitial".
Chris Thompson
2014/07/25 18:19:46
Done.
|
| + |
| base::LazyInstance<SafeBrowsingBlockingPage::UnsafeResourceMap> |
| g_unsafe_resource_map = LAZY_INSTANCE_INITIALIZER; |
| @@ -310,6 +319,29 @@ SafeBrowsingBlockingPage::SafeBrowsingBlockingPage( |
| ui_manager_, web_contents, unsafe_resources[0]); |
| } |
| + // ExperienceSampling: Set up new sampling event for this interstitial. |
| + // This needs to handle all types of warnings this insterstitial can show. |
|
palmer
2014/07/25 18:05:00
Typo again :)
Chris Thompson
2014/07/25 18:19:46
Done.
|
| + std::string event_name; |
| + switch (interstitial_type_) { |
| + case TYPE_MALWARE_AND_PHISHING: |
| + event_name = kEventNameMalwareAndPhishing; |
| + break; |
| + case TYPE_MALWARE: |
| + event_name = kEventNameMalware; |
| + break; |
| + case TYPE_PHISHING: |
| + event_name = kEventNamePhishing; |
| + break; |
| + default: |
| + event_name = kEventNameOther; |
| + break; |
| + } |
| + sampling_event_.reset(new ExperienceSamplingEvent( |
| + event_name, |
| + url_, |
| + web_contents_->GetLastCommittedURL(), |
| + web_contents_->GetBrowserContext())); |
| + |
| interstitial_page_ = InterstitialPage::Create( |
| web_contents, IsMainPageLoadBlocked(unsafe_resources), url_, this); |
| } |
| @@ -353,6 +385,8 @@ void SafeBrowsingBlockingPage::CommandReceived(const std::string& cmd) { |
| NOTREACHED(); |
| } |
| + sampling_event_->has_viewed_learn_more = true; |
| + |
| OpenURLParams params( |
| url, Referrer(), CURRENT_TAB, content::PAGE_TRANSITION_LINK, false); |
| web_contents_->OpenURL(params); |
| @@ -373,6 +407,8 @@ void SafeBrowsingBlockingPage::CommandReceived(const std::string& cmd) { |
| NOTREACHED(); |
| } |
| + sampling_event_->has_viewed_learn_more = true; |
| + |
| OpenURLParams params( |
| url, Referrer(), CURRENT_TAB, content::PAGE_TRANSITION_LINK, false); |
| web_contents_->OpenURL(params); |
| @@ -486,6 +522,9 @@ void SafeBrowsingBlockingPage::CommandReceived(const std::string& cmd) { |
| // User expanded the "see more info" section of the page. We don't actually |
| // do any action based on this, it's just so that RecordUserReactionTime can |
| // track it. |
| + |
| + // ExperienceSampling: We track that the user expanded the details. |
| + sampling_event_->has_viewed_details = true; |
| return; |
| } |
| @@ -549,6 +588,9 @@ void SafeBrowsingBlockingPage::OnProceed() { |
| unsafe_resource_map->erase(iter); |
| } |
| + // ExperienceSampling: Notify that user decided to proceed. |
| + sampling_event_->CreateUserDecisionEvent(ExperienceSamplingEvent::kProceed); |
| + |
| // Now that this interstitial is gone, we can show the new one. |
| if (blocking_page) |
| blocking_page->interstitial_page_->Show(); |
| @@ -592,6 +634,10 @@ void SafeBrowsingBlockingPage::OnDontProceed() { |
| navigation_entry_index_to_remove_)); |
| navigation_entry_index_to_remove_ = -1; |
| } |
| + |
| + // ExperienceSampling: Notify that user decided to go back. |
| + // This also occurs if the user navigates away or closes the tab. |
| + sampling_event_->CreateUserDecisionEvent(ExperienceSamplingEvent::kDeny); |
| } |
| void SafeBrowsingBlockingPage::OnGotHistoryCount(bool success, |