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 211 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
222 | 222 |
223 void LogoBridge::GetCurrentLogo(JNIEnv* env, | 223 void LogoBridge::GetCurrentLogo(JNIEnv* env, |
224 const JavaParamRef<jobject>& obj, | 224 const JavaParamRef<jobject>& obj, |
225 const JavaParamRef<jobject>& j_logo_observer) { | 225 const JavaParamRef<jobject>& j_logo_observer) { |
226 if (doodle_service_) { | 226 if (doodle_service_) { |
227 j_logo_observer_.Reset(j_logo_observer); | 227 j_logo_observer_.Reset(j_logo_observer); |
228 | 228 |
229 // Immediately hand out any current cached config. | 229 // Immediately hand out any current cached config. |
230 DoodleConfigReceived(doodle_service_->config(), /*from_cache=*/true); | 230 DoodleConfigReceived(doodle_service_->config(), /*from_cache=*/true); |
231 // Also request a refresh, in case something changed. | 231 // Also request a refresh, in case something changed. |
232 doodle_service_->Refresh(); | 232 if (!doodle_service_->Refresh()) { |
| 233 // If the request was skipped, tell the observer not to wait for |
| 234 // notification. This ensures that metrics recording accounts for that. |
| 235 Java_LogoObserver_onLogoRefreshSkipped(env, j_logo_observer_); |
| 236 } |
233 } else { | 237 } else { |
234 // |observer| is deleted in LogoObserverAndroid::OnObserverRemoved(). | 238 // |observer| is deleted in LogoObserverAndroid::OnObserverRemoved(). |
235 LogoObserverAndroid* observer = new LogoObserverAndroid( | 239 LogoObserverAndroid* observer = new LogoObserverAndroid( |
236 weak_ptr_factory_.GetWeakPtr(), env, j_logo_observer); | 240 weak_ptr_factory_.GetWeakPtr(), env, j_logo_observer); |
237 logo_service_->GetLogo(observer); | 241 logo_service_->GetLogo(observer); |
238 } | 242 } |
239 } | 243 } |
240 | 244 |
241 void LogoBridge::GetAnimatedLogo(JNIEnv* env, | 245 void LogoBridge::GetAnimatedLogo(JNIEnv* env, |
242 const JavaParamRef<jobject>& obj, | 246 const JavaParamRef<jobject>& obj, |
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
308 ScopedJavaLocalRef<jobject> j_logo = MakeJavaLogo( | 312 ScopedJavaLocalRef<jobject> j_logo = MakeJavaLogo( |
309 env, image.ToSkBitmap(), on_click_url, alt_text, animated_image_url); | 313 env, image.ToSkBitmap(), on_click_url, alt_text, animated_image_url); |
310 Java_LogoObserver_onLogoAvailable(env, j_logo_observer_, j_logo, | 314 Java_LogoObserver_onLogoAvailable(env, j_logo_observer_, j_logo, |
311 config_from_cache); | 315 config_from_cache); |
312 } | 316 } |
313 | 317 |
314 // static | 318 // static |
315 bool RegisterLogoBridge(JNIEnv* env) { | 319 bool RegisterLogoBridge(JNIEnv* env) { |
316 return RegisterNativesImpl(env); | 320 return RegisterNativesImpl(env); |
317 } | 321 } |
OLD | NEW |