| // Copyright 2014 The Chromium Authors. All rights reserved. | 
 | // Use of this source code is governed by a BSD-style license that can be | 
 | // found in the LICENSE file. | 
 |  | 
 | #ifndef CHROME_BROWSER_EXTENSIONS_API_EXPERIENCE_SAMPLING_PRIVATE_EXPERIENCE_SAMPLING_H_ | 
 | #define CHROME_BROWSER_EXTENSIONS_API_EXPERIENCE_SAMPLING_PRIVATE_EXPERIENCE_SAMPLING_H_ | 
 |  | 
 | #include "chrome/common/extensions/api/experience_sampling_private.h" | 
 |  | 
 | namespace content { | 
 | class BrowserContext; | 
 | } | 
 |  | 
 | class GURL; | 
 |  | 
 | namespace extensions { | 
 |  | 
 | using api::experience_sampling_private::UIElement; | 
 |  | 
 | class ExperienceSamplingEvent { | 
 |  public: | 
 |   // String constants for user decision events. | 
 |   static const char kProceed[]; | 
 |   static const char kDeny[]; | 
 |   static const char kCancel[]; | 
 |   static const char kReload[]; | 
 |  | 
 |   // String constants for event names. | 
 |   static const char kExtensionInstallDialog[]; | 
 |  | 
 |   // The Create() functions can return an empty scoped_ptr if they cannot find | 
 |   // the BrowserContext. Code using them should check the scoped pointer using | 
 |   // scoped_ptr::get(). | 
 |   static scoped_ptr<ExperienceSamplingEvent> Create( | 
 |       const std::string& element_name, | 
 |       const GURL& destination, | 
 |       const GURL& referrer); | 
 |  | 
 |   static scoped_ptr<ExperienceSamplingEvent> Create( | 
 |       const std::string& element_name); | 
 |  | 
 |   ExperienceSamplingEvent(const std::string& element_name, | 
 |                           const GURL& destination, | 
 |                           const GURL& referrer, | 
 |                           content::BrowserContext* browser_context); | 
 |   ~ExperienceSamplingEvent(); | 
 |  | 
 |   // Sends an extension API event for the user seeing this event. | 
 |   void CreateOnDisplayedEvent(); | 
 |   // Sends an extension API event for the user making a decision about this | 
 |   // event. | 
 |   void CreateUserDecisionEvent(const std::string& decision_name); | 
 |  | 
 |   bool has_viewed_details() const { return has_viewed_details_; } | 
 |   void set_has_viewed_details(bool viewed) { has_viewed_details_ = viewed; } | 
 |   bool has_viewed_learn_more() const { return has_viewed_learn_more_; } | 
 |   void set_has_viewed_learn_more(bool viewed) { | 
 |     has_viewed_learn_more_ = viewed; | 
 |   } | 
 |  | 
 |  private: | 
 |   bool has_viewed_details_; | 
 |   bool has_viewed_learn_more_; | 
 |   content::BrowserContext* browser_context_; | 
 |   UIElement ui_element_; | 
 |  | 
 |   DISALLOW_COPY_AND_ASSIGN(ExperienceSamplingEvent); | 
 | }; | 
 |  | 
 | }  // namespace extensions | 
 |  | 
 | #endif  // CHROME_BROWSER_EXTENSIONS_API_EXPERIENCE_SAMPLING_PRIVATE_EXPERIENCE_SAMPLING_H_ |