Upstream version 10.39.225.0
[platform/framework/web/crosswalk.git] / src / chrome / browser / extensions / api / experience_sampling_private / experience_sampling.h
1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #ifndef CHROME_BROWSER_EXTENSIONS_API_EXPERIENCE_SAMPLING_PRIVATE_EXPERIENCE_SAMPLING_H_
6 #define CHROME_BROWSER_EXTENSIONS_API_EXPERIENCE_SAMPLING_PRIVATE_EXPERIENCE_SAMPLING_H_
7
8 #include "chrome/common/extensions/api/experience_sampling_private.h"
9
10 namespace content {
11 class BrowserContext;
12 }
13
14 class GURL;
15
16 namespace extensions {
17
18 using api::experience_sampling_private::UIElement;
19
20 class ExperienceSamplingEvent {
21  public:
22   // String constants for user decision events.
23   static const char kProceed[];
24   static const char kDeny[];
25   static const char kIgnore[];
26   static const char kCancel[];
27   static const char kReload[];
28
29   // String constants for event names.
30   static const char kMaliciousDownload[];
31   static const char kDangerousDownload[];
32   static const char kDownloadDangerPrompt[];
33   static const char kExtensionInstallDialog[];
34
35   // The Create() functions can return an empty scoped_ptr if they cannot find
36   // the BrowserContext. Code using them should check the scoped pointer using
37   // scoped_ptr::get().
38   static scoped_ptr<ExperienceSamplingEvent> Create(
39       const std::string& element_name,
40       const GURL& destination,
41       const GURL& referrer);
42
43   static scoped_ptr<ExperienceSamplingEvent> Create(
44       const std::string& element_name);
45
46   ExperienceSamplingEvent(const std::string& element_name,
47                           const GURL& destination,
48                           const GURL& referrer,
49                           content::BrowserContext* browser_context);
50   ~ExperienceSamplingEvent();
51
52   // Sends an extension API event for the user seeing this event.
53   void CreateOnDisplayedEvent();
54   // Sends an extension API event for the user making a decision about this
55   // event.
56   void CreateUserDecisionEvent(const std::string& decision_name);
57
58   bool has_viewed_details() const { return has_viewed_details_; }
59   void set_has_viewed_details(bool viewed) { has_viewed_details_ = viewed; }
60   bool has_viewed_learn_more() const { return has_viewed_learn_more_; }
61   void set_has_viewed_learn_more(bool viewed) {
62     has_viewed_learn_more_ = viewed;
63   }
64
65  private:
66   bool has_viewed_details_;
67   bool has_viewed_learn_more_;
68   content::BrowserContext* browser_context_;
69   UIElement ui_element_;
70
71   DISALLOW_COPY_AND_ASSIGN(ExperienceSamplingEvent);
72 };
73
74 }  // namespace extensions
75
76 #endif  // CHROME_BROWSER_EXTENSIONS_API_EXPERIENCE_SAMPLING_PRIVATE_EXPERIENCE_SAMPLING_H_