Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(556)

Side by Side Diff: chrome/browser/android/banners/app_banner_manager.cc

Issue 914403006: [App banners] Start adding unit tets (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 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 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 #include "chrome/browser/android/banners/app_banner_manager.h" 5 #include "chrome/browser/android/banners/app_banner_manager.h"
6 6
7 #include "base/android/jni_android.h" 7 #include "base/android/jni_android.h"
8 #include "base/android/jni_string.h" 8 #include "base/android/jni_string.h"
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/command_line.h" 10 #include "base/command_line.h"
(...skipping 26 matching lines...) Expand all
37 #include "ui/gfx/android/java_bitmap.h" 37 #include "ui/gfx/android/java_bitmap.h"
38 #include "ui/gfx/screen.h" 38 #include "ui/gfx/screen.h"
39 39
40 using base::android::ConvertJavaStringToUTF8; 40 using base::android::ConvertJavaStringToUTF8;
41 using base::android::ConvertJavaStringToUTF16; 41 using base::android::ConvertJavaStringToUTF16;
42 using base::android::ConvertUTF8ToJavaString; 42 using base::android::ConvertUTF8ToJavaString;
43 using base::android::ConvertUTF16ToJavaString; 43 using base::android::ConvertUTF16ToJavaString;
44 44
45 namespace { 45 namespace {
46 const char kBannerTag[] = "google-play-id"; 46 const char kBannerTag[] = "google-play-id";
47 base::TimeDelta gTimeDeltaForTesting;
47 } 48 }
48 49
49 namespace banners { 50 namespace banners {
50 51
51 AppBannerManager::AppBannerManager(JNIEnv* env, jobject obj) 52 AppBannerManager::AppBannerManager(JNIEnv* env, jobject obj)
52 : weak_java_banner_view_manager_(env, obj), weak_factory_(this) { 53 : weak_java_banner_view_manager_(env, obj), weak_factory_(this) {
53 } 54 }
54 55
55 AppBannerManager::~AppBannerManager() { 56 AppBannerManager::~AppBannerManager() {
56 } 57 }
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after
137 return; 138 return;
138 139
139 FetchIcon(icon_url); 140 FetchIcon(icon_url);
140 } 141 }
141 } 142 }
142 143
143 void AppBannerManager::RecordCouldShowBanner( 144 void AppBannerManager::RecordCouldShowBanner(
144 const std::string& package_or_start_url) { 145 const std::string& package_or_start_url) {
145 AppBannerSettingsHelper::RecordBannerEvent( 146 AppBannerSettingsHelper::RecordBannerEvent(
146 web_contents(), validated_url_, package_or_start_url, 147 web_contents(), validated_url_, package_or_start_url,
147 AppBannerSettingsHelper::APP_BANNER_EVENT_COULD_SHOW, base::Time::Now()); 148 AppBannerSettingsHelper::APP_BANNER_EVENT_COULD_SHOW, GetCurrentTime());
148 } 149 }
149 150
150 bool AppBannerManager::CheckIfShouldShow( 151 bool AppBannerManager::CheckIfShouldShow(
151 const std::string& package_or_start_url) { 152 const std::string& package_or_start_url) {
152 if (!AppBannerSettingsHelper::ShouldShowBanner(web_contents(), validated_url_, 153 if (!AppBannerSettingsHelper::ShouldShowBanner(web_contents(), validated_url_,
153 package_or_start_url, 154 package_or_start_url,
154 base::Time::Now())) { 155 GetCurrentTime())) {
155 return false; 156 return false;
156 } 157 }
157 158
158 AppBannerSettingsHelper::RecordBannerEvent( 159 AppBannerSettingsHelper::RecordBannerEvent(
159 web_contents(), validated_url_, package_or_start_url, 160 web_contents(), validated_url_, package_or_start_url,
160 AppBannerSettingsHelper::APP_BANNER_EVENT_DID_SHOW, base::Time::Now()); 161 AppBannerSettingsHelper::APP_BANNER_EVENT_DID_SHOW, GetCurrentTime());
161 return true; 162 return true;
162 } 163 }
163 164
164 bool AppBannerManager::OnMessageReceived(const IPC::Message& message) { 165 bool AppBannerManager::OnMessageReceived(const IPC::Message& message) {
165 bool handled = true; 166 bool handled = true;
166 IPC_BEGIN_MESSAGE_MAP(AppBannerManager, message) 167 IPC_BEGIN_MESSAGE_MAP(AppBannerManager, message)
167 IPC_MESSAGE_HANDLER(ChromeViewHostMsg_DidRetrieveMetaTagContent, 168 IPC_MESSAGE_HANDLER(ChromeViewHostMsg_DidRetrieveMetaTagContent,
168 OnDidRetrieveMetaTagContent) 169 OnDidRetrieveMetaTagContent)
169 IPC_MESSAGE_UNHANDLED(handled = false) 170 IPC_MESSAGE_UNHANDLED(handled = false)
170 IPC_END_MESSAGE_MAP() 171 IPC_END_MESSAGE_MAP()
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after
251 if (validated_url_ != web_contents()->GetURL()) 252 if (validated_url_ != web_contents()->GetURL())
252 return false; 253 return false;
253 254
254 std::string image_url = ConvertJavaStringToUTF8(env, jicon_url); 255 std::string image_url = ConvertJavaStringToUTF8(env, jicon_url);
255 app_title_ = ConvertJavaStringToUTF16(env, japp_title); 256 app_title_ = ConvertJavaStringToUTF16(env, japp_title);
256 native_app_package_ = ConvertJavaStringToUTF8(env, japp_package); 257 native_app_package_ = ConvertJavaStringToUTF8(env, japp_package);
257 native_app_data_.Reset(env, japp_data); 258 native_app_data_.Reset(env, japp_data);
258 return FetchIcon(GURL(image_url)); 259 return FetchIcon(GURL(image_url));
259 } 260 }
260 261
262 int AppBannerManager::GetNumActiveFetchers(JNIEnv* env, jobject obj) {
263 return fetcher_.get() ? 1 : 0;
gone 2015/02/14 01:29:27 Forked off from another CL which has multiple fetc
264 }
265
261 bool AppBannerManager::FetchIcon(const GURL& image_url) { 266 bool AppBannerManager::FetchIcon(const GURL& image_url) {
262 if (!web_contents()) 267 if (!web_contents())
263 return false; 268 return false;
264 269
265 // Begin asynchronously fetching the app icon. 270 // Begin asynchronously fetching the app icon.
266 Profile* profile = 271 Profile* profile =
267 Profile::FromBrowserContext(web_contents()->GetBrowserContext()); 272 Profile::FromBrowserContext(web_contents()->GetBrowserContext());
268 fetcher_.reset(new chrome::BitmapFetcher(image_url, this)); 273 fetcher_.reset(new chrome::BitmapFetcher(image_url, this));
269 fetcher_.get()->Start( 274 fetcher_.get()->Start(
270 profile->GetRequestContext(), 275 profile->GetRequestContext(),
271 std::string(), 276 std::string(),
272 net::URLRequest::CLEAR_REFERRER_ON_TRANSITION_FROM_SECURE_TO_INSECURE, 277 net::URLRequest::CLEAR_REFERRER_ON_TRANSITION_FROM_SECURE_TO_INSECURE,
273 net::LOAD_NORMAL); 278 net::LOAD_NORMAL);
274 app_icon_url_ = image_url; 279 app_icon_url_ = image_url;
275 return true; 280 return true;
276 } 281 }
277 282
278 int AppBannerManager::GetPreferredIconSize() { 283 int AppBannerManager::GetPreferredIconSize() {
279 JNIEnv* env = base::android::AttachCurrentThread(); 284 JNIEnv* env = base::android::AttachCurrentThread();
280 ScopedJavaLocalRef<jobject> jobj = weak_java_banner_view_manager_.get(env); 285 ScopedJavaLocalRef<jobject> jobj = weak_java_banner_view_manager_.get(env);
281 if (jobj.is_null()) 286 if (jobj.is_null())
282 return 0; 287 return 0;
283 288
284 return Java_AppBannerManager_getPreferredIconSize(env, jobj.obj()); 289 return Java_AppBannerManager_getPreferredIconSize(env, jobj.obj());
285 } 290 }
286 291
292 // static
293 base::Time AppBannerManager::GetCurrentTime() {
294 return base::Time::Now() + gTimeDeltaForTesting;
295 }
296
287 void RecordDismissEvent(JNIEnv* env, jclass clazz, jint metric) { 297 void RecordDismissEvent(JNIEnv* env, jclass clazz, jint metric) {
288 banners::TrackDismissEvent(metric); 298 banners::TrackDismissEvent(metric);
289 } 299 }
290 300
291 void RecordInstallEvent(JNIEnv* env, jclass clazz, jint metric) { 301 void RecordInstallEvent(JNIEnv* env, jclass clazz, jint metric) {
292 banners::TrackInstallEvent(metric); 302 banners::TrackInstallEvent(metric);
293 } 303 }
294 304
295 jlong Init(JNIEnv* env, jobject obj) { 305 jlong Init(JNIEnv* env, jobject obj) {
296 AppBannerManager* manager = new AppBannerManager(env, obj); 306 AppBannerManager* manager = new AppBannerManager(env, obj);
297 return reinterpret_cast<intptr_t>(manager); 307 return reinterpret_cast<intptr_t>(manager);
298 } 308 }
299 309
300 jboolean IsEnabled(JNIEnv* env, jclass clazz) { 310 jboolean IsEnabled(JNIEnv* env, jclass clazz) {
301 return base::CommandLine::ForCurrentProcess()->HasSwitch( 311 return base::CommandLine::ForCurrentProcess()->HasSwitch(
302 switches::kEnableAppInstallAlerts); 312 switches::kEnableAppInstallAlerts);
303 } 313 }
304 314
315 void SetTimeDeltaForTesting(JNIEnv* env, jclass clazz, jint days) {
316 gTimeDeltaForTesting = base::TimeDelta::FromDays(days);
317 }
318
305 // Register native methods 319 // Register native methods
306 bool RegisterAppBannerManager(JNIEnv* env) { 320 bool RegisterAppBannerManager(JNIEnv* env) {
307 return RegisterNativesImpl(env); 321 return RegisterNativesImpl(env);
308 } 322 }
309 323
310 } // namespace banners 324 } // namespace banners
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698