Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(774)

Unified Diff: chrome/browser/android/logo_bridge.cc

Issue 2833473002: Record NTP.LogoShownTime for timely refreshs only (Closed)
Patch Set: Fix compile errors and comments Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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..eefd475c523c920456e2a94a7b4812b96cf5a96b 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(), /*from_cache=*/true);
+ }
// 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,23 @@ 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;
+ }
+ FetchDoodleImage(maybe_doodle_config.value(), /*from_cache=*/false);
+}
+
+void LogoBridge::NotifyNoLogoAvailable(bool from_cache) {
+ JNIEnv* env = base::android::AttachCurrentThread();
+ Java_LogoObserver_onLogoAvailable(env, j_logo_observer_,
+ ScopedJavaLocalRef<jobject>(), from_cache);
}
-void LogoBridge::DoodleConfigReceived(
- const base::Optional<doodle::DoodleConfig>& maybe_doodle_config,
- bool from_cache) {
+void LogoBridge::FetchDoodleImage(const doodle::DoodleConfig& doodle_config,
+ bool from_cache) {
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.

Powered by Google App Engine
This is Rietveld 408576698