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 |