Update To 11.40.268.0
[platform/framework/web/crosswalk.git] / src / chrome / browser / chromeos / extensions / echo_private_api.h
1 // Copyright (c) 2012 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_CHROMEOS_EXTENSIONS_ECHO_PRIVATE_API_H_
6 #define CHROME_BROWSER_CHROMEOS_EXTENSIONS_ECHO_PRIVATE_API_H_
7
8 #include "base/compiler_specific.h"
9 #include "chrome/browser/chromeos/ui/echo_dialog_listener.h"
10 #include "chrome/browser/extensions/chrome_extension_function.h"
11
12 class PrefRegistrySimple;
13
14 namespace chromeos {
15
16 class EchoDialogView;
17
18 // Namespace to register the EchoCheckedOffers field in Local State.
19 namespace echo_offer {
20
21 void RegisterPrefs(PrefRegistrySimple* registry);
22
23 }  // namespace echo_offer
24
25 }  // namespace chromeos
26
27 class EchoPrivateGetRegistrationCodeFunction
28     : public ChromeSyncExtensionFunction {
29  public:
30   EchoPrivateGetRegistrationCodeFunction();
31
32  protected:
33   virtual ~EchoPrivateGetRegistrationCodeFunction();
34   virtual bool RunSync() override;
35
36  private:
37   void GetRegistrationCode(const std::string& type);
38   DECLARE_EXTENSION_FUNCTION("echoPrivate.getRegistrationCode",
39                              ECHOPRIVATE_GETREGISTRATIONCODE)
40 };
41
42 class EchoPrivateGetOobeTimestampFunction
43     : public ChromeAsyncExtensionFunction {
44  public:
45   EchoPrivateGetOobeTimestampFunction();
46
47  protected:
48   virtual ~EchoPrivateGetOobeTimestampFunction();
49   virtual bool RunAsync() override;
50
51  private:
52   bool GetOobeTimestampOnFileThread();
53   DECLARE_EXTENSION_FUNCTION("echoPrivate.getOobeTimestamp",
54                              ECHOPRIVATE_GETOOBETIMESTAMP)
55 };
56
57 class EchoPrivateSetOfferInfoFunction : public ChromeSyncExtensionFunction {
58  public:
59   EchoPrivateSetOfferInfoFunction();
60
61  protected:
62   virtual ~EchoPrivateSetOfferInfoFunction();
63   virtual bool RunSync() override;
64
65  private:
66   DECLARE_EXTENSION_FUNCTION("echoPrivate.setOfferInfo",
67                              ECHOPRIVATE_SETOFFERINFO)
68 };
69
70 class EchoPrivateGetOfferInfoFunction : public ChromeSyncExtensionFunction {
71  public:
72   EchoPrivateGetOfferInfoFunction();
73
74  protected:
75   virtual ~EchoPrivateGetOfferInfoFunction();
76   virtual bool RunSync() override;
77
78  private:
79   DECLARE_EXTENSION_FUNCTION("echoPrivate.getOfferInfo",
80                              ECHOPRIVATE_GETOFFERINFO)
81 };
82
83 // The function first checks if offers redeeming is allowed by the device
84 // policy. It should then show a dialog that, depending on the check result,
85 // either asks user's consent to verify the device's eligibility for the offer,
86 // or informs the user that the offers redeeming is disabled.
87 // It returns whether the user consent was given.
88 class EchoPrivateGetUserConsentFunction : public ChromeAsyncExtensionFunction,
89                                           public chromeos::EchoDialogListener {
90  public:
91   // Type for the dialog shown callback used in tests.
92   typedef base::Callback<void(chromeos::EchoDialogView* dialog)>
93           DialogShownTestCallback;
94
95   EchoPrivateGetUserConsentFunction();
96
97   // Creates the function with non-null dialog_shown_callback_.
98   // To be used in tests.
99   static scoped_refptr<EchoPrivateGetUserConsentFunction> CreateForTest(
100       const DialogShownTestCallback& dialog_shown_callback);
101
102  protected:
103   virtual ~EchoPrivateGetUserConsentFunction();
104
105   virtual bool RunAsync() override;
106
107  private:
108   // chromeos::EchoDialogListener overrides.
109   virtual void OnAccept() override;
110   virtual void OnCancel() override;
111   virtual void OnMoreInfoLinkClicked() override;
112
113   // Checks whether "allow redeem ChromeOS registration offers" setting is
114   // disabled in cros settings. It may be asynchronous if the needed settings
115   // provider is not yet trusted.
116   // Upon completion |OnRedeemOffersAllowed| is called.
117   void CheckRedeemOffersAllowed();
118   void OnRedeemOffersAllowedChecked(bool is_allowed);
119
120   // Sets result and calls SendResponse.
121   void Finalize(bool consent);
122
123   // Result of |CheckRedeemOffersAllowed()|.
124   bool redeem_offers_allowed_;
125   // Callback used in tests. Called after an echo dialog is shown.
126   DialogShownTestCallback dialog_shown_callback_;
127
128   DECLARE_EXTENSION_FUNCTION("echoPrivate.getUserConsent",
129                              ECHOPRIVATE_GETUSERCONSENT)
130 };
131
132 #endif  // CHROME_BROWSER_CHROMEOS_EXTENSIONS_ECHO_PRIVATE_API_H_