Add new certificateProvider extension API.
[chromium-blink-merge.git] / chrome / browser / favicon / favicon_utils.cc
blob54b4d335f1483a56db9e767688b4cd873a2b38e2
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"
15 namespace favicon {
17 void CreateContentFaviconDriverForWebContents(
18 content::WebContents* web_contents) {
19 DCHECK(web_contents);
20 if (ContentFaviconDriver::FromWebContents(web_contents))
21 return;
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())
39 return true;
41 GURL url = web_contents->GetURL();
42 if (url.SchemeIs(content::kChromeUIScheme) &&
43 url.host() == chrome::kChromeUINewTabHost) {
44 return false;
47 // No favicon on Instant New Tab Pages.
48 if (search::IsInstantNTP(web_contents))
49 return false;
51 return true;
54 } // namespace favicon