1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #include "chrome/browser/favicon/favicon_utils.h"
7 #include "chrome/browser/bookmarks/bookmark_model_factory.h"
8 #include "chrome/browser/favicon/favicon_service_factory.h"
9 #include "chrome/browser/history/history_service_factory.h"
10 #include "chrome/browser/profiles/profile.h"
11 #include "chrome/browser/search/search.h"
12 #include "chrome/common/url_constants.h"
13 #include "content/public/common/favicon_url.h"
17 void CreateContentFaviconDriverForWebContents(
18 content::WebContents
* web_contents
) {
20 if (ContentFaviconDriver::FromWebContents(web_contents
))
23 Profile
* original_profile
=
24 Profile::FromBrowserContext(web_contents
->GetBrowserContext())
25 ->GetOriginalProfile();
26 return ContentFaviconDriver::CreateForWebContents(
27 web_contents
, FaviconServiceFactory::GetForProfile(
28 original_profile
, ServiceAccessType::IMPLICIT_ACCESS
),
29 HistoryServiceFactory::GetForProfile(original_profile
,
30 ServiceAccessType::IMPLICIT_ACCESS
),
31 BookmarkModelFactory::GetForProfileIfExists(original_profile
));
34 bool ShouldDisplayFavicon(content::WebContents
* web_contents
) {
35 // Always display a throbber during pending loads.
36 const content::NavigationController
& controller
=
37 web_contents
->GetController();
38 if (controller
.GetLastCommittedEntry() && controller
.GetPendingEntry())
41 GURL url
= web_contents
->GetURL();
42 if (url
.SchemeIs(content::kChromeUIScheme
) &&
43 url
.host() == chrome::kChromeUINewTabHost
) {
47 // No favicon on Instant New Tab Pages.
48 if (search::IsInstantNTP(web_contents
))
54 } // namespace favicon