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

Unified Diff: components/favicon/content/content_favicon_driver.cc

Issue 1407353012: Refactor FaviconDriver::OnFaviconAvailable() (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@initial_simplify
Patch Set: Created 5 years, 1 month 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: components/favicon/content/content_favicon_driver.cc
diff --git a/components/favicon/content/content_favicon_driver.cc b/components/favicon/content/content_favicon_driver.cc
index 8cf90669a7e1b6b01a7eb4195e86da9227e9e31f..7c8c34f7445ae99fd9d5341a594461ba5646c89e 100644
--- a/components/favicon/content/content_favicon_driver.cc
+++ b/components/favicon/content/content_favicon_driver.cc
@@ -73,6 +73,19 @@ gfx::Image ContentFaviconDriver::GetFavicon() const {
return gfx::Image();
}
+GURL ContentFaviconDriver::GetFaviconURL() const {
+ const content::NavigationController& controller =
+ web_contents()->GetController();
+ content::NavigationEntry* entry = controller.GetTransientEntry();
+ if (entry)
+ return entry->GetFavicon().url;
+
+ entry = controller.GetLastCommittedEntry();
+ if (entry)
+ return entry->GetFavicon().url;
+ return GURL();
+}
+
bool ContentFaviconDriver::FaviconIsValid() const {
const content::NavigationController& controller =
web_contents()->GetController();
@@ -113,27 +126,6 @@ GURL ContentFaviconDriver::GetActiveURL() {
return entry ? entry->GetURL() : GURL();
}
-void ContentFaviconDriver::SetActiveFaviconValidity(bool valid) {
- GetFaviconStatus().valid = valid;
-}
-
-GURL ContentFaviconDriver::GetActiveFaviconURL() {
- return GetFaviconStatus().url;
-}
-
-void ContentFaviconDriver::SetActiveFaviconURL(const GURL& url) {
- GetFaviconStatus().url = url;
-}
-
-void ContentFaviconDriver::SetActiveFaviconImage(const gfx::Image& image) {
- GetFaviconStatus().image = image;
-}
-
-content::FaviconStatus& ContentFaviconDriver::GetFaviconStatus() {
- DCHECK(web_contents()->GetController().GetLastCommittedEntry());
- return web_contents()->GetController().GetLastCommittedEntry()->GetFavicon();
-}
-
ContentFaviconDriver::ContentFaviconDriver(
content::WebContents* web_contents,
FaviconService* favicon_service,
@@ -146,9 +138,28 @@ ContentFaviconDriver::ContentFaviconDriver(
ContentFaviconDriver::~ContentFaviconDriver() {
}
-void ContentFaviconDriver::NotifyFaviconUpdated(bool icon_url_changed) {
- FaviconDriverImpl::NotifyFaviconUpdated(icon_url_changed);
- web_contents()->NotifyNavigationStateChanged(content::INVALIDATE_TYPE_TAB);
+void ContentFaviconDriver::OnFaviconUpdated(
+ const GURL& page_url,
+ FaviconDriverObserver::NotificationIconType notification_icon_type,
+ const GURL& icon_url,
+ bool icon_url_changed,
+ const gfx::Image& image) {
+ // Check whether the active URL has changed since FetchFavicon() was called.
+ // This should never occur.
sky 2015/11/20 00:44:26 DCHECK
pkotwicz 2015/11/21 23:04:08 Done.
+ content::NavigationEntry* entry =
+ web_contents()->GetController().GetLastCommittedEntry();
+ if (!entry || entry->GetURL() != page_url)
+ return;
+
+ if (notification_icon_type == FaviconDriverObserver::NON_TOUCH_16_DIP) {
+ entry->GetFavicon().valid = true;
+ entry->GetFavicon().url = icon_url;
+ entry->GetFavicon().image = image;
+ web_contents()->NotifyNavigationStateChanged(content::INVALIDATE_TYPE_TAB);
+ }
+
+ NotifyFaviconUpdatedObservers(notification_icon_type, icon_url,
+ icon_url_changed, image);
}
void ContentFaviconDriver::DidUpdateFaviconURL(

Powered by Google App Engine
This is Rietveld 408576698