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..68efc5ccd9e6aa372aaa81e2a043d7484bb4be09 100644 |
--- a/chrome/browser/android/logo_bridge.cc |
+++ b/chrome/browser/android/logo_bridge.cc |
@@ -226,10 +226,16 @@ void LogoBridge::GetCurrentLogo(JNIEnv* env, |
if (doodle_service_) { |
j_logo_observer_.Reset(j_logo_observer); |
- // Immediately hand out any current cached config. |
- DoodleConfigReceived(doodle_service_->config(), /*from_cache=*/true); |
+ bool has_cached_config = doodle_service_->config().has_value(); |
+ if (has_cached_config) { |
+ FetchDoodleImage(doodle_service_->config().value()); |
+ } |
// Also request a refresh, in case something changed. |
- doodle_service_->Refresh(); |
+ bool has_triggered_refresh = doodle_service_->Refresh(); |
+ if (!has_cached_config && !has_triggered_refresh) { |
+ // With neither cache hit or refresh, no doodle can be expected soon. |
+ NotifyNoLogoAvailable(/*from_cache=*/true) |
+ } |
} else { |
// |observer| is deleted in LogoObserverAndroid::OnObserverRemoved(). |
LogoObserverAndroid* observer = new LogoObserverAndroid( |
@@ -251,21 +257,21 @@ void LogoBridge::OnDoodleConfigUpdated( |
if (j_logo_observer_.is_null()) { |
return; |
} |
- DoodleConfigReceived(maybe_doodle_config, /*from_cache=*/false); |
+ if (!maybe_doodle_config.has_value()) { |
+ NotifyNoLogoAvailable(/*from_cache=*/false) return; |
Marc Treib
2017/04/27 11:15:50
Missing a ";" and newline before "return".
fhorschig
2017/04/27 11:49:21
Added.
|
+ } |
+ FetchDoodleImage(maybe_doodle_config.value()); |
} |
-void LogoBridge::DoodleConfigReceived( |
- const base::Optional<doodle::DoodleConfig>& maybe_doodle_config, |
- bool from_cache) { |
+void LogoBridge::NotifyNoLogoAvailable(bool from_cache) { |
+ JNIEnv* env = base::android::AttachCurrentThread(); |
+ Java_LogoObserver_onLogoAvailable(env, j_logo_observer_, |
+ ScopedJavaLocalRef<jobject>(), from_cache); |
+} |
+ |
+void LogoBridge::FetchDoodleImage(const doodle::DoodleConfig& doodle_config) { |
DCHECK(!j_logo_observer_.is_null()); |
- if (!maybe_doodle_config.has_value()) { |
- JNIEnv* env = base::android::AttachCurrentThread(); |
- Java_LogoObserver_onLogoAvailable( |
- env, j_logo_observer_, ScopedJavaLocalRef<jobject>(), from_cache); |
- return; |
- } |
- const doodle::DoodleConfig& doodle_config = maybe_doodle_config.value(); |
// If there is a CTA image, that means the main image is animated. Show the |
// non-animated CTA image first, and load the animated one only when the |
// user requests it. |