Index: chrome/browser/ui/cocoa/download/download_item_controller.mm |
diff --git a/chrome/browser/ui/cocoa/download/download_item_controller.mm b/chrome/browser/ui/cocoa/download/download_item_controller.mm |
index 430ecbc3fd7b1a4b0b5f3c85bdb6fa187f9b25df..3d4a8e611a93040cb7c3565e149832d6f9445de8 100644 |
--- a/chrome/browser/ui/cocoa/download/download_item_controller.mm |
+++ b/chrome/browser/ui/cocoa/download/download_item_controller.mm |
@@ -14,6 +14,7 @@ |
#include "chrome/browser/download/chrome_download_manager_delegate.h" |
#include "chrome/browser/download/download_item_model.h" |
#include "chrome/browser/download/download_shelf_context_menu.h" |
+#include "chrome/browser/extensions/api/experience_sampling_private/experience_sampling.h" |
#import "chrome/browser/themes/theme_properties.h" |
#import "chrome/browser/themes/theme_service.h" |
#import "chrome/browser/ui/cocoa/download/download_item_button.h" |
@@ -35,6 +36,7 @@ |
#include "ui/gfx/image/image.h" |
using content::DownloadItem; |
+using extensions::ExperienceSamplingEvent; |
namespace { |
@@ -117,6 +119,8 @@ class DownloadShelfContextMenuMac : public DownloadShelfContextMenu { |
} |
- (void)dealloc { |
+ if (sampling_event_.get()) |
+ sampling_event_->CreateUserDecisionEvent(ExperienceSamplingEvent::kIgnore); |
[[NSNotificationCenter defaultCenter] removeObserver:self]; |
[progressView_ setController:nil]; |
[[self view] removeFromSuperview]; |
@@ -144,6 +148,17 @@ class DownloadShelfContextMenuMac : public DownloadShelfContextMenu { |
[self setState:kDangerous]; |
+ // ExperienceSampling: Dangerous or malicious download warning is being shown |
+ // to the user, so we start a new SamplingEvent and track it. |
+ std::string event_name = downloadModel->MightBeMalicious() |
+ ? ExperienceSamplingEvent::kMaliciousDownload |
+ : ExperienceSamplingEvent::kDangerousDownload; |
+ sampling_event_.reset(new ExperienceSamplingEvent( |
+ event_name, |
+ downloadModel->download()->GetURL(), |
+ downloadModel->download()->GetReferrerUrl(), |
+ downloadModel->download()->GetBrowserContext())); |
+ |
ui::ResourceBundle& rb = ui::ResourceBundle::GetSharedInstance(); |
NSImage* alertIcon; |
@@ -320,6 +335,11 @@ class DownloadShelfContextMenuMac : public DownloadShelfContextMenu { |
// user did this to detect whether we're being clickjacked. |
UMA_HISTOGRAM_LONG_TIMES("clickjacking.save_download", |
base::Time::Now() - creationTime_); |
+ // ExperienceSampling: User chose to proceed with dangerous download. |
+ if (sampling_event_.get()) { |
+ sampling_event_->CreateUserDecisionEvent(ExperienceSamplingEvent::kProceed); |
+ sampling_event_.reset(NULL); |
+ } |
// This will change the state and notify us. |
bridge_->download_model()->download()->ValidateDangerousDownload(); |
} |
@@ -333,6 +353,11 @@ class DownloadShelfContextMenuMac : public DownloadShelfContextMenu { |
} |
- (IBAction)dismissMaliciousDownload:(id)sender { |
+ // ExperienceSampling: User dismissed the dangerous download. |
+ if (sampling_event_.get()) { |
+ sampling_event_->CreateUserDecisionEvent(ExperienceSamplingEvent::kDeny); |
+ sampling_event_.reset(NULL); |
+ } |
[self remove]; |
// WARNING: we are deleted at this point. |
} |