Index: chrome/browser/android/logo_bridge.cc |
diff --git a/chrome/browser/android/logo_bridge.cc b/chrome/browser/android/logo_bridge.cc |
index 8b24611abf5673c2f5d5822656c2494971bc0b04..fd70d1608d98b9edcbf1294b4be7876081af44da 100644 |
--- a/chrome/browser/android/logo_bridge.cc |
+++ b/chrome/browser/android/logo_bridge.cc |
@@ -220,16 +220,23 @@ void LogoBridge::Destroy(JNIEnv* env, const JavaParamRef<jobject>& obj) { |
delete this; |
} |
-void LogoBridge::GetCurrentLogo(JNIEnv* env, |
- const JavaParamRef<jobject>& obj, |
- const JavaParamRef<jobject>& j_logo_observer) { |
+void LogoBridge::GetCurrentLogo( |
+ JNIEnv* env, |
+ const JavaParamRef<jobject>& obj, |
+ const JavaParamRef<jobject>& j_logo_observer, |
+ const JavaParamRef<jobject>& j_refresh_skipped_callback) { |
if (doodle_service_) { |
j_logo_observer_.Reset(j_logo_observer); |
// Immediately hand out any current cached config. |
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
|
// Also request a refresh, in case something changed. |
- doodle_service_->Refresh(); |
+ if (!doodle_service_->Refresh()) { |
+ // If the request was skipped, tell the observer not to wait for |
+ // notification. This ensures that metrics recording accounts for that. |
+ Java_LogoRefreshCallback_onRefreshSkipped(env, |
+ j_refresh_skipped_callback); |
+ } |
} else { |
// |observer| is deleted in LogoObserverAndroid::OnObserverRemoved(). |
LogoObserverAndroid* observer = new LogoObserverAndroid( |