Chromium Code Reviews| OLD | NEW |
|---|---|
| 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/logo_bridge.h" | 5 #include "chrome/browser/android/logo_bridge.h" |
| 6 | 6 |
| 7 #include <jni.h> | 7 #include <jni.h> |
| 8 #include <stdint.h> | 8 #include <stdint.h> |
| 9 | 9 |
| 10 #include "base/android/jni_android.h" | 10 #include "base/android/jni_android.h" |
| (...skipping 202 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 213 animated_logo_fetcher_ = base::MakeUnique<AnimatedLogoFetcher>( | 213 animated_logo_fetcher_ = base::MakeUnique<AnimatedLogoFetcher>( |
| 214 profile->GetRequestContext()); | 214 profile->GetRequestContext()); |
| 215 } | 215 } |
| 216 | 216 |
| 217 LogoBridge::~LogoBridge() {} | 217 LogoBridge::~LogoBridge() {} |
| 218 | 218 |
| 219 void LogoBridge::Destroy(JNIEnv* env, const JavaParamRef<jobject>& obj) { | 219 void LogoBridge::Destroy(JNIEnv* env, const JavaParamRef<jobject>& obj) { |
| 220 delete this; | 220 delete this; |
| 221 } | 221 } |
| 222 | 222 |
| 223 void LogoBridge::GetCurrentLogo(JNIEnv* env, | 223 void LogoBridge::GetCurrentLogo( |
| 224 const JavaParamRef<jobject>& obj, | 224 JNIEnv* env, |
| 225 const JavaParamRef<jobject>& j_logo_observer) { | 225 const JavaParamRef<jobject>& obj, |
| 226 const JavaParamRef<jobject>& j_logo_observer, | |
| 227 const JavaParamRef<jobject>& j_refresh_skipped_callback) { | |
| 226 if (doodle_service_) { | 228 if (doodle_service_) { |
| 227 j_logo_observer_.Reset(j_logo_observer); | 229 j_logo_observer_.Reset(j_logo_observer); |
| 228 | 230 |
| 229 // Immediately hand out any current cached config. | 231 // Immediately hand out any current cached config. |
| 230 DoodleConfigReceived(doodle_service_->config(), /*from_cache=*/true); | 232 DoodleConfigReceived(doodle_service_->config(), /*from_cache=*/true); |
|
Marc Treib
2017/04/26 10:17:16
Ah, here's the problem I'm talking about above, an
fhorschig
2017/04/27 10:31:44
OnLogoAvailable is now exactly called when
a) we h
| |
| 231 // Also request a refresh, in case something changed. | 233 // Also request a refresh, in case something changed. |
| 232 doodle_service_->Refresh(); | 234 if (!doodle_service_->Refresh()) { |
| 235 // If the request was skipped, tell the observer not to wait for | |
| 236 // notification. This ensures that metrics recording accounts for that. | |
| 237 Java_LogoRefreshCallback_onRefreshSkipped(env, | |
| 238 j_refresh_skipped_callback); | |
| 239 } | |
| 233 } else { | 240 } else { |
| 234 // |observer| is deleted in LogoObserverAndroid::OnObserverRemoved(). | 241 // |observer| is deleted in LogoObserverAndroid::OnObserverRemoved(). |
| 235 LogoObserverAndroid* observer = new LogoObserverAndroid( | 242 LogoObserverAndroid* observer = new LogoObserverAndroid( |
| 236 weak_ptr_factory_.GetWeakPtr(), env, j_logo_observer); | 243 weak_ptr_factory_.GetWeakPtr(), env, j_logo_observer); |
| 237 logo_service_->GetLogo(observer); | 244 logo_service_->GetLogo(observer); |
| 238 } | 245 } |
| 239 } | 246 } |
| 240 | 247 |
| 241 void LogoBridge::GetAnimatedLogo(JNIEnv* env, | 248 void LogoBridge::GetAnimatedLogo(JNIEnv* env, |
| 242 const JavaParamRef<jobject>& obj, | 249 const JavaParamRef<jobject>& obj, |
| (...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 308 ScopedJavaLocalRef<jobject> j_logo = MakeJavaLogo( | 315 ScopedJavaLocalRef<jobject> j_logo = MakeJavaLogo( |
| 309 env, image.ToSkBitmap(), on_click_url, alt_text, animated_image_url); | 316 env, image.ToSkBitmap(), on_click_url, alt_text, animated_image_url); |
| 310 Java_LogoObserver_onLogoAvailable(env, j_logo_observer_, j_logo, | 317 Java_LogoObserver_onLogoAvailable(env, j_logo_observer_, j_logo, |
| 311 config_from_cache); | 318 config_from_cache); |
| 312 } | 319 } |
| 313 | 320 |
| 314 // static | 321 // static |
| 315 bool RegisterLogoBridge(JNIEnv* env) { | 322 bool RegisterLogoBridge(JNIEnv* env) { |
| 316 return RegisterNativesImpl(env); | 323 return RegisterNativesImpl(env); |
| 317 } | 324 } |
| OLD | NEW |