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

Side by Side Diff: components/favicon/content/content_favicon_driver.cc

Issue 2691933004: Avoid cyclic dependency FaviconHandler<-->FaviconDriverImpl (Closed)
Patch Set: Addressed more comments. Created 3 years, 9 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 unified diff | Download patch
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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 "components/favicon/content/content_favicon_driver.h" 5 #include "components/favicon/content/content_favicon_driver.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "components/favicon/content/favicon_url_util.h" 8 #include "components/favicon/content/favicon_url_util.h"
9 #include "components/favicon/core/favicon_service.h" 9 #include "components/favicon/core/favicon_service.h"
10 #include "components/favicon/core/favicon_url.h" 10 #include "components/favicon/core/favicon_url.h"
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
81 if (entry) 81 if (entry)
82 return entry->GetFavicon().valid; 82 return entry->GetFavicon().valid;
83 83
84 entry = controller.GetLastCommittedEntry(); 84 entry = controller.GetLastCommittedEntry();
85 if (entry) 85 if (entry)
86 return entry->GetFavicon().valid; 86 return entry->GetFavicon().valid;
87 87
88 return false; 88 return false;
89 } 89 }
90 90
91 int ContentFaviconDriver::StartDownload(const GURL& url, int max_image_size) {
92 if (WasUnableToDownloadFavicon(url)) {
93 DVLOG(1) << "Skip Failed FavIcon: " << url;
94 return 0;
95 }
96
97 bool bypass_cache = (bypass_cache_page_url_ == GetActiveURL());
98 bypass_cache_page_url_ = GURL();
99
100 return web_contents()->DownloadImage(
101 url, true, max_image_size, bypass_cache,
102 base::Bind(&FaviconDriverImpl::DidDownloadFavicon,
103 base::Unretained(this)));
104 }
105
106 bool ContentFaviconDriver::IsOffTheRecord() {
107 DCHECK(web_contents());
108 return web_contents()->GetBrowserContext()->IsOffTheRecord();
109 }
110
111 GURL ContentFaviconDriver::GetActiveURL() { 91 GURL ContentFaviconDriver::GetActiveURL() {
112 content::NavigationEntry* entry = 92 content::NavigationEntry* entry =
113 web_contents()->GetController().GetLastCommittedEntry(); 93 web_contents()->GetController().GetLastCommittedEntry();
114 return entry ? entry->GetURL() : GURL(); 94 return entry ? entry->GetURL() : GURL();
115 } 95 }
116 96
117 ContentFaviconDriver::ContentFaviconDriver( 97 ContentFaviconDriver::ContentFaviconDriver(
118 content::WebContents* web_contents, 98 content::WebContents* web_contents,
119 FaviconService* favicon_service, 99 FaviconService* favicon_service,
120 history::HistoryService* history_service, 100 history::HistoryService* history_service,
121 bookmarks::BookmarkModel* bookmark_model) 101 bookmarks::BookmarkModel* bookmark_model)
122 : content::WebContentsObserver(web_contents), 102 : content::WebContentsObserver(web_contents),
123 FaviconDriverImpl(favicon_service, history_service, bookmark_model) { 103 FaviconDriverImpl(favicon_service, history_service, bookmark_model) {
124 } 104 }
125 105
126 ContentFaviconDriver::~ContentFaviconDriver() { 106 ContentFaviconDriver::~ContentFaviconDriver() {
127 } 107 }
128 108
109 int ContentFaviconDriver::DownloadImage(const GURL& url,
110 int max_image_size,
111 ImageDownloadCallback callback) {
112 if (WasUnableToDownloadFavicon(url)) {
113 DVLOG(1) << "Skip Failed FavIcon: " << url;
114 return 0;
115 }
116
117 bool bypass_cache = (bypass_cache_page_url_ == GetActiveURL());
118 bypass_cache_page_url_ = GURL();
119
120 return web_contents()->DownloadImage(url, true, max_image_size, bypass_cache,
121 callback);
122 }
123
124 bool ContentFaviconDriver::IsOffTheRecord() {
125 DCHECK(web_contents());
126 return web_contents()->GetBrowserContext()->IsOffTheRecord();
127 }
128
129 void ContentFaviconDriver::OnFaviconUpdated( 129 void ContentFaviconDriver::OnFaviconUpdated(
130 const GURL& page_url, 130 const GURL& page_url,
131 FaviconDriverObserver::NotificationIconType notification_icon_type, 131 FaviconDriverObserver::NotificationIconType notification_icon_type,
132 const GURL& icon_url, 132 const GURL& icon_url,
133 bool icon_url_changed, 133 bool icon_url_changed,
134 const gfx::Image& image) { 134 const gfx::Image& image) {
135 content::NavigationEntry* entry = 135 content::NavigationEntry* entry =
136 web_contents()->GetController().GetLastCommittedEntry(); 136 web_contents()->GetController().GetLastCommittedEntry();
137 DCHECK(entry && entry->GetURL() == page_url); 137 DCHECK(entry && entry->GetURL() == page_url);
138 138
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
197 // redownloaded. 197 // redownloaded.
198 GURL url = navigation_handle->GetURL(); 198 GURL url = navigation_handle->GetURL();
199 if (url != bypass_cache_page_url_) 199 if (url != bypass_cache_page_url_)
200 bypass_cache_page_url_ = GURL(); 200 bypass_cache_page_url_ = GURL();
201 201
202 // Get the favicon, either from history or request it from the net. 202 // Get the favicon, either from history or request it from the net.
203 FetchFavicon(url); 203 FetchFavicon(url);
204 } 204 }
205 205
206 } // namespace favicon 206 } // namespace favicon
OLDNEW
« no previous file with comments | « components/favicon/content/content_favicon_driver.h ('k') | components/favicon/core/favicon_driver.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698