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

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

Issue 932263002: [App banners] Stop passing JNI barrier to get icon size (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebasing 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
« no previous file with comments | « chrome/browser/android/banners/app_banner_manager.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
84 const GURL url, 84 const GURL url,
85 const SkBitmap* icon) { 85 const SkBitmap* icon) {
86 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); 86 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI));
87 87
88 if (!is_cancelled_) 88 if (!is_cancelled_)
89 manager_->OnFetchComplete(this, url, icon); 89 manager_->OnFetchComplete(this, url, icon);
90 90
91 delete this; 91 delete this;
92 } 92 }
93 93
94 AppBannerManager::AppBannerManager(JNIEnv* env, jobject obj) 94 AppBannerManager::AppBannerManager(JNIEnv* env, jobject obj, int icon_size)
95 : fetcher_(nullptr), 95 : preferred_icon_size_(icon_size),
96 fetcher_(nullptr),
96 weak_java_banner_view_manager_(env, obj), 97 weak_java_banner_view_manager_(env, obj),
97 weak_factory_(this) { 98 weak_factory_(this) {
98 } 99 }
99 100
100 AppBannerManager::~AppBannerManager() { 101 AppBannerManager::~AppBannerManager() {
101 CancelActiveFetcher(); 102 CancelActiveFetcher();
102 } 103 }
103 104
104 void AppBannerManager::Destroy(JNIEnv* env, jobject obj) { 105 void AppBannerManager::Destroy(JNIEnv* env, jobject obj) {
105 delete this; 106 delete this;
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
172 weak_factory_.GetWeakPtr())); 173 weak_factory_.GetWeakPtr()));
173 } 174 }
174 175
175 void AppBannerManager::OnDidCheckHasServiceWorker(bool has_service_worker) { 176 void AppBannerManager::OnDidCheckHasServiceWorker(bool has_service_worker) {
176 if (has_service_worker) { 177 if (has_service_worker) {
177 // TODO(benwells): Check triggering parameters. 178 // TODO(benwells): Check triggering parameters.
178 // Create an infobar to promote the manifest's app. 179 // Create an infobar to promote the manifest's app.
179 GURL icon_url = 180 GURL icon_url =
180 ManifestIconSelector::FindBestMatchingIcon( 181 ManifestIconSelector::FindBestMatchingIcon(
181 web_app_data_.icons, 182 web_app_data_.icons,
182 GetPreferredIconSize(), 183 preferred_icon_size_,
183 gfx::Screen::GetScreenFor(web_contents()->GetNativeView())); 184 gfx::Screen::GetScreenFor(web_contents()->GetNativeView()));
184 if (icon_url.is_empty()) 185 if (icon_url.is_empty())
185 return; 186 return;
186 187
187 FetchIcon(icon_url); 188 FetchIcon(icon_url);
188 } else { 189 } else {
189 TrackDisplayEvent(DISPLAY_EVENT_LACKS_SERVICE_WORKER); 190 TrackDisplayEvent(DISPLAY_EVENT_LACKS_SERVICE_WORKER);
190 } 191 }
191 } 192 }
192 193
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after
293 if (jobj.is_null()) 294 if (jobj.is_null())
294 return; 295 return;
295 296
296 ScopedJavaLocalRef<jstring> jurl( 297 ScopedJavaLocalRef<jstring> jurl(
297 ConvertUTF8ToJavaString(env, expected_url.spec())); 298 ConvertUTF8ToJavaString(env, expected_url.spec()));
298 ScopedJavaLocalRef<jstring> jpackage( 299 ScopedJavaLocalRef<jstring> jpackage(
299 ConvertUTF8ToJavaString(env, tag_content)); 300 ConvertUTF8ToJavaString(env, tag_content));
300 Java_AppBannerManager_fetchAppDetails(env, 301 Java_AppBannerManager_fetchAppDetails(env,
301 jobj.obj(), 302 jobj.obj(),
302 jurl.obj(), 303 jurl.obj(),
303 jpackage.obj()); 304 jpackage.obj(),
305 preferred_icon_size_);
304 } 306 }
305 307
306 bool AppBannerManager::OnAppDetailsRetrieved(JNIEnv* env, 308 bool AppBannerManager::OnAppDetailsRetrieved(JNIEnv* env,
307 jobject obj, 309 jobject obj,
308 jobject japp_data, 310 jobject japp_data,
309 jstring japp_title, 311 jstring japp_title,
310 jstring japp_package, 312 jstring japp_package,
311 jstring jicon_url) { 313 jstring jicon_url) {
312 if (validated_url_ != web_contents()->GetURL()) 314 if (validated_url_ != web_contents()->GetURL())
313 return false; 315 return false;
(...skipping 21 matching lines...) Expand all
335 fetcher_ = new BannerBitmapFetcher(image_url, this); 337 fetcher_ = new BannerBitmapFetcher(image_url, this);
336 fetcher_->Start( 338 fetcher_->Start(
337 profile->GetRequestContext(), 339 profile->GetRequestContext(),
338 std::string(), 340 std::string(),
339 net::URLRequest::CLEAR_REFERRER_ON_TRANSITION_FROM_SECURE_TO_INSECURE, 341 net::URLRequest::CLEAR_REFERRER_ON_TRANSITION_FROM_SECURE_TO_INSECURE,
340 net::LOAD_NORMAL); 342 net::LOAD_NORMAL);
341 app_icon_url_ = image_url; 343 app_icon_url_ = image_url;
342 return true; 344 return true;
343 } 345 }
344 346
345 int AppBannerManager::GetPreferredIconSize() {
346 JNIEnv* env = base::android::AttachCurrentThread();
347 ScopedJavaLocalRef<jobject> jobj = weak_java_banner_view_manager_.get(env);
348 if (jobj.is_null())
349 return 0;
350
351 return Java_AppBannerManager_getPreferredIconSize(env, jobj.obj());
352 }
353
354 // static 347 // static
355 base::Time AppBannerManager::GetCurrentTime() { 348 base::Time AppBannerManager::GetCurrentTime() {
356 return base::Time::Now() + gTimeDeltaForTesting; 349 return base::Time::Now() + gTimeDeltaForTesting;
357 } 350 }
358 351
359 jlong Init(JNIEnv* env, jobject obj) { 352 jlong Init(JNIEnv* env, jobject obj, jint icon_size) {
360 AppBannerManager* manager = new AppBannerManager(env, obj); 353 AppBannerManager* manager = new AppBannerManager(env, obj, icon_size);
361 return reinterpret_cast<intptr_t>(manager); 354 return reinterpret_cast<intptr_t>(manager);
362 } 355 }
363 356
364 jboolean IsEnabled(JNIEnv* env, jclass clazz) { 357 jboolean IsEnabled(JNIEnv* env, jclass clazz) {
365 return base::CommandLine::ForCurrentProcess()->HasSwitch( 358 return base::CommandLine::ForCurrentProcess()->HasSwitch(
366 switches::kEnableAppInstallAlerts); 359 switches::kEnableAppInstallAlerts);
367 } 360 }
368 361
369 void SetTimeDeltaForTesting(JNIEnv* env, jclass clazz, jint days) { 362 void SetTimeDeltaForTesting(JNIEnv* env, jclass clazz, jint days) {
370 gTimeDeltaForTesting = base::TimeDelta::FromDays(days); 363 gTimeDeltaForTesting = base::TimeDelta::FromDays(days);
371 } 364 }
372 365
373 // Register native methods 366 // Register native methods
374 bool RegisterAppBannerManager(JNIEnv* env) { 367 bool RegisterAppBannerManager(JNIEnv* env) {
375 return RegisterNativesImpl(env); 368 return RegisterNativesImpl(env);
376 } 369 }
377 370
378 } // namespace banners 371 } // namespace banners
OLDNEW
« no previous file with comments | « chrome/browser/android/banners/app_banner_manager.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698