| OLD | NEW |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #ifndef CHROME_BROWSER_WEB_RESOURCE_PROMO_RESOURCE_SERVICE_H_ | 5 #ifndef CHROME_BROWSER_WEB_RESOURCE_PROMO_RESOURCE_SERVICE_H_ |
| 6 #define CHROME_BROWSER_WEB_RESOURCE_PROMO_RESOURCE_SERVICE_H_ | 6 #define CHROME_BROWSER_WEB_RESOURCE_PROMO_RESOURCE_SERVICE_H_ |
| 7 #pragma once | 7 #pragma once |
| 8 | 8 |
| 9 #include <string> | 9 #include <string> |
| 10 | 10 |
| (...skipping 26 matching lines...) Expand all Loading... |
| 37 DEV_BUILD = 1, | 37 DEV_BUILD = 1, |
| 38 BETA_BUILD = 1 << 1, | 38 BETA_BUILD = 1 << 1, |
| 39 STABLE_BUILD = 1 << 2, | 39 STABLE_BUILD = 1 << 2, |
| 40 CANARY_BUILD = 1 << 3, | 40 CANARY_BUILD = 1 << 3, |
| 41 ALL_BUILDS = (1 << 4) - 1, | 41 ALL_BUILDS = (1 << 4) - 1, |
| 42 }; | 42 }; |
| 43 | 43 |
| 44 // Checks for conditions to show promo: start/end times, channel, etc. | 44 // Checks for conditions to show promo: start/end times, channel, etc. |
| 45 static bool CanShowNotificationPromo(Profile* profile); | 45 static bool CanShowNotificationPromo(Profile* profile); |
| 46 | 46 |
| 47 // Checks if this user is in a group for sync promo roll-out. | 47 // Checks if this user is in a group for sign-in promo roll-out. |
| 48 static bool CanShowSyncPromo(Profile* profile); | 48 static bool CanShowNTPSignInPromo(Profile* profile); |
| 49 | 49 |
| 50 static void RegisterPrefs(PrefService* local_state); | 50 static void RegisterPrefs(PrefService* local_state); |
| 51 | 51 |
| 52 static void RegisterUserPrefs(PrefService* prefs); | 52 static void RegisterUserPrefs(PrefService* prefs); |
| 53 | 53 |
| 54 explicit PromoResourceService(Profile* profile); | 54 explicit PromoResourceService(Profile* profile); |
| 55 | 55 |
| 56 static chrome::VersionInfo::Channel GetChannel(); | 56 static chrome::VersionInfo::Channel GetChannel(); |
| 57 static bool IsBuildTargeted(chrome::VersionInfo::Channel, int builds_allowed); | 57 static bool IsBuildTargeted(chrome::VersionInfo::Channel, int builds_allowed); |
| 58 | 58 |
| 59 // Default server of dynamically loaded NTP HTML elements. | 59 // Default server of dynamically loaded NTP HTML elements. |
| 60 static const char* kDefaultPromoResourceServer; | 60 static const char* kDefaultPromoResourceServer; |
| 61 | 61 |
| 62 private: | 62 private: |
| 63 friend class SyncPromoTest; | 63 friend class NTPSignInPromoTest; |
| 64 FRIEND_TEST_ALL_PREFIXES(PromoResourceServiceTest, IsBuildTargetedTest); | 64 FRIEND_TEST_ALL_PREFIXES(PromoResourceServiceTest, IsBuildTargetedTest); |
| 65 FRIEND_TEST_ALL_PREFIXES(PromoResourceServiceTest, UnpackLogoSignal); | 65 FRIEND_TEST_ALL_PREFIXES(PromoResourceServiceTest, UnpackLogoSignal); |
| 66 FRIEND_TEST_ALL_PREFIXES(PromoResourceServiceTest, UnpackWebStoreSignal); | 66 FRIEND_TEST_ALL_PREFIXES(PromoResourceServiceTest, UnpackWebStoreSignal); |
| 67 FRIEND_TEST_ALL_PREFIXES( | 67 FRIEND_TEST_ALL_PREFIXES( |
| 68 PromoResourceServiceTest, UnpackPartialWebStoreSignal); | 68 PromoResourceServiceTest, UnpackPartialWebStoreSignal); |
| 69 FRIEND_TEST_ALL_PREFIXES( | 69 FRIEND_TEST_ALL_PREFIXES( |
| 70 PromoResourceServiceTest, UnpackWebStoreSignalHttpsLogo); | 70 PromoResourceServiceTest, UnpackWebStoreSignalHttpsLogo); |
| 71 FRIEND_TEST_ALL_PREFIXES( | 71 FRIEND_TEST_ALL_PREFIXES( |
| 72 PromoResourceServiceTest, UnpackWebStoreSignalHttpsLogoError); | 72 PromoResourceServiceTest, UnpackWebStoreSignalHttpsLogoError); |
| 73 FRIEND_TEST_ALL_PREFIXES( | 73 FRIEND_TEST_ALL_PREFIXES( |
| (...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 202 // name: starts with "webstore_promo" to identify the signal. The second | 202 // name: starts with "webstore_promo" to identify the signal. The second |
| 203 // part contains the release channels targeted (bitwise or of | 203 // part contains the release channels targeted (bitwise or of |
| 204 // BuildTypes). The third part specifies what users should maximize | 204 // BuildTypes). The third part specifies what users should maximize |
| 205 // the apps section of the NTP when first loading the promo (bitwise | 205 // the apps section of the NTP when first loading the promo (bitwise |
| 206 // or of AppsPromo::UserGroup). The forth part is optional and | 206 // or of AppsPromo::UserGroup). The forth part is optional and |
| 207 // specifies the URL of the logo image. If left out, the default | 207 // specifies the URL of the logo image. If left out, the default |
| 208 // webstore logo will be used. The logo can be an HTTPS or DATA URL. | 208 // webstore logo will be used. The logo can be an HTTPS or DATA URL. |
| 209 // answer_id: the promo's id | 209 // answer_id: the promo's id |
| 210 void UnpackWebStoreSignal(const base::DictionaryValue& parsed_json); | 210 void UnpackWebStoreSignal(const base::DictionaryValue& parsed_json); |
| 211 | 211 |
| 212 // Unpack the sync promo. Expects JSON delivery in the following format: | 212 // Unpack the NTP sign in promo. Expects JSON in the following format: |
| 213 // { | 213 // { |
| 214 // "topic": { | 214 // "topic": { |
| 215 // "answers": [ | 215 // "answers": [ |
| 216 // ... | 216 // ... |
| 217 // { | 217 // { |
| 218 // "answer_id": "XXXXXXX", | 218 // "answer_id": "XXXXXXX", |
| 219 // "name": "sync_promo", | 219 // "name": "sign_in_promo", |
| 220 // "question": "1:5" | 220 // "question": "1:5" |
| 221 // } | 221 // } |
| 222 // ] | 222 // ] |
| 223 // } | 223 // } |
| 224 // } | 224 // } |
| 225 // | |
| 226 // The question is in the form of "<build>:<group_max>". | 225 // The question is in the form of "<build>:<group_max>". |
| 227 void UnpackSyncPromoSignal(const base::DictionaryValue& parsed_json); | 226 void UnpackNTPSignInPromoSignal(const base::DictionaryValue& parsed_json); |
| 228 | 227 |
| 229 // NotificationPromo::Delegate override. | 228 // NotificationPromo::Delegate override. |
| 230 virtual void OnNewNotification(double start, double end) OVERRIDE; | 229 virtual void OnNewNotification(double start, double end) OVERRIDE; |
| 231 | 230 |
| 232 // The profile this service belongs to. | 231 // The profile this service belongs to. |
| 233 Profile* profile_; | 232 Profile* profile_; |
| 234 | 233 |
| 235 // Overrides the current Chrome release channel for testing purposes. | 234 // Overrides the current Chrome release channel for testing purposes. |
| 236 chrome::VersionInfo::Channel channel_; | 235 chrome::VersionInfo::Channel channel_; |
| 237 | 236 |
| 238 // A helper that downloads the promo logo. | 237 // A helper that downloads the promo logo. |
| 239 scoped_ptr<AppsPromoLogoFetcher> apps_promo_logo_fetcher_; | 238 scoped_ptr<AppsPromoLogoFetcher> apps_promo_logo_fetcher_; |
| 240 | 239 |
| 241 DISALLOW_COPY_AND_ASSIGN(PromoResourceService); | 240 DISALLOW_COPY_AND_ASSIGN(PromoResourceService); |
| 242 }; | 241 }; |
| 243 | 242 |
| 244 #endif // CHROME_BROWSER_WEB_RESOURCE_PROMO_RESOURCE_SERVICE_H_ | 243 #endif // CHROME_BROWSER_WEB_RESOURCE_PROMO_RESOURCE_SERVICE_H_ |
| OLD | NEW |