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

Side by Side Diff: chrome/browser/thumbnails/thumbnail_service_impl.cc

Issue 815983002: Topsites become keyedService based. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Remove extra inclusion from testing_profile.h Created 5 years, 11 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 (c) 2012 The Chromium Authors. All rights reserved. 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 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 "chrome/browser/thumbnails/thumbnail_service_impl.h" 5 #include "chrome/browser/thumbnails/thumbnail_service_impl.h"
6 6
7 #include "base/command_line.h" 7 #include "base/command_line.h"
8 #include "base/memory/ref_counted_memory.h" 8 #include "base/memory/ref_counted_memory.h"
9 #include "base/time/time.h" 9 #include "base/time/time.h"
10 #include "chrome/browser/history/history_service.h" 10 #include "chrome/browser/history/history_service.h"
11 #include "chrome/browser/history/top_sites_factory.h"
11 #include "chrome/browser/thumbnails/content_based_thumbnailing_algorithm.h" 12 #include "chrome/browser/thumbnails/content_based_thumbnailing_algorithm.h"
12 #include "chrome/browser/thumbnails/simple_thumbnail_crop.h" 13 #include "chrome/browser/thumbnails/simple_thumbnail_crop.h"
13 #include "chrome/browser/thumbnails/thumbnailing_context.h" 14 #include "chrome/browser/thumbnails/thumbnailing_context.h"
14 #include "chrome/common/chrome_switches.h" 15 #include "chrome/common/chrome_switches.h"
15 #include "components/search/search.h" 16 #include "components/search/search.h"
16 #include "content/public/browser/browser_thread.h" 17 #include "content/public/browser/browser_thread.h"
17 #include "url/gurl.h" 18 #include "url/gurl.h"
18 19
19 using content::BrowserThread; 20 using content::BrowserThread;
20 21
21 namespace { 22 namespace {
22 23
23 // The thumbnail size in DIP. 24 // The thumbnail size in DIP.
24 const int kThumbnailWidth = 212; 25 const int kThumbnailWidth = 212;
25 const int kThumbnailHeight = 142; 26 const int kThumbnailHeight = 142;
26 27
27 // True if thumbnail retargeting feature is enabled (Finch/flags). 28 // True if thumbnail retargeting feature is enabled (Finch/flags).
28 bool IsThumbnailRetargetingEnabled() { 29 bool IsThumbnailRetargetingEnabled() {
29 if (!chrome::IsInstantExtendedAPIEnabled()) 30 if (!chrome::IsInstantExtendedAPIEnabled())
30 return false; 31 return false;
31 32
32 return base::CommandLine::ForCurrentProcess()->HasSwitch( 33 return base::CommandLine::ForCurrentProcess()->HasSwitch(
33 switches::kEnableThumbnailRetargeting); 34 switches::kEnableThumbnailRetargeting);
34 } 35 }
35 36
36 void AddForcedURLOnUIThread(scoped_refptr<history::TopSites> top_sites, 37 void AddForcedURLOnUIThread(scoped_refptr<history::TopSites> top_sites,
37 const GURL& url) { 38 const GURL& url) {
38 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 39 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
39 40
40 if (top_sites.get() != NULL) 41 if (top_sites)
41 top_sites->AddForcedURL(url, base::Time::Now()); 42 top_sites->AddForcedURL(url, base::Time::Now());
42 } 43 }
43 44
44 } // namespace 45 } // namespace
45 46
46 namespace thumbnails { 47 namespace thumbnails {
47 48
48 ThumbnailServiceImpl::ThumbnailServiceImpl(Profile* profile) 49 ThumbnailServiceImpl::ThumbnailServiceImpl(Profile* profile)
49 : top_sites_(profile->GetTopSites()), 50 : top_sites_(TopSitesFactory::GetForProfile(profile)),
50 use_thumbnail_retargeting_(IsThumbnailRetargetingEnabled()) { 51 use_thumbnail_retargeting_(IsThumbnailRetargetingEnabled()) {
51 } 52 }
52 53
53 ThumbnailServiceImpl::~ThumbnailServiceImpl() { 54 ThumbnailServiceImpl::~ThumbnailServiceImpl() {
54 } 55 }
55 56
56 bool ThumbnailServiceImpl::SetPageThumbnail(const ThumbnailingContext& context, 57 bool ThumbnailServiceImpl::SetPageThumbnail(const ThumbnailingContext& context,
57 const gfx::Image& thumbnail) { 58 const gfx::Image& thumbnail) {
58 scoped_refptr<history::TopSites> local_ptr(top_sites_); 59 scoped_refptr<history::TopSites> local_ptr(top_sites_);
59 if (local_ptr.get() == NULL) 60 if (!local_ptr)
60 return false; 61 return false;
61 62
62 return local_ptr->SetPageThumbnail(context.url, thumbnail, context.score); 63 return local_ptr->SetPageThumbnail(context.url, thumbnail, context.score);
63 } 64 }
64 65
65 bool ThumbnailServiceImpl::GetPageThumbnail( 66 bool ThumbnailServiceImpl::GetPageThumbnail(
66 const GURL& url, 67 const GURL& url,
67 bool prefix_match, 68 bool prefix_match,
68 scoped_refptr<base::RefCountedMemory>* bytes) { 69 scoped_refptr<base::RefCountedMemory>* bytes) {
69 scoped_refptr<history::TopSites> local_ptr(top_sites_); 70 scoped_refptr<history::TopSites> local_ptr(top_sites_);
70 if (local_ptr.get() == NULL) 71 if (!local_ptr)
71 return false; 72 return false;
72 73
73 return local_ptr->GetPageThumbnail(url, prefix_match, bytes); 74 return local_ptr->GetPageThumbnail(url, prefix_match, bytes);
74 } 75 }
75 76
76 void ThumbnailServiceImpl::AddForcedURL(const GURL& url) { 77 void ThumbnailServiceImpl::AddForcedURL(const GURL& url) {
77 scoped_refptr<history::TopSites> local_ptr(top_sites_); 78 scoped_refptr<history::TopSites> local_ptr(top_sites_);
78 if (local_ptr.get() == NULL) 79 if (!local_ptr)
79 return; 80 return;
80 81
81 // Adding 82 // Adding
82 BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, 83 BrowserThread::PostTask(BrowserThread::UI, FROM_HERE,
83 base::Bind(AddForcedURLOnUIThread, local_ptr, url)); 84 base::Bind(AddForcedURLOnUIThread, local_ptr, url));
84 } 85 }
85 86
86 ThumbnailingAlgorithm* ThumbnailServiceImpl::GetThumbnailingAlgorithm() 87 ThumbnailingAlgorithm* ThumbnailServiceImpl::GetThumbnailingAlgorithm()
87 const { 88 const {
88 const gfx::Size thumbnail_size(kThumbnailWidth, kThumbnailHeight); 89 const gfx::Size thumbnail_size(kThumbnailWidth, kThumbnailHeight);
89 if (use_thumbnail_retargeting_) 90 if (use_thumbnail_retargeting_)
90 return new ContentBasedThumbnailingAlgorithm(thumbnail_size); 91 return new ContentBasedThumbnailingAlgorithm(thumbnail_size);
91 return new SimpleThumbnailCrop(thumbnail_size); 92 return new SimpleThumbnailCrop(thumbnail_size);
92 } 93 }
93 94
94 bool ThumbnailServiceImpl::ShouldAcquirePageThumbnail(const GURL& url) { 95 bool ThumbnailServiceImpl::ShouldAcquirePageThumbnail(const GURL& url) {
95 scoped_refptr<history::TopSites> local_ptr(top_sites_); 96 scoped_refptr<history::TopSites> local_ptr(top_sites_);
96 97
97 if (local_ptr.get() == NULL) 98 if (!local_ptr)
98 return false; 99 return false;
99 100
100 // Skip if the given URL is not appropriate for history. 101 // Skip if the given URL is not appropriate for history.
101 if (!HistoryService::CanAddURL(url)) 102 if (!HistoryService::CanAddURL(url))
102 return false; 103 return false;
103 // Skip if the top sites list is full, and the URL is not known. 104 // Skip if the top sites list is full, and the URL is not known.
104 if (local_ptr->IsNonForcedFull() && !local_ptr->IsKnownURL(url)) 105 if (local_ptr->IsNonForcedFull() && !local_ptr->IsKnownURL(url))
105 return false; 106 return false;
106 // Skip if we don't have to udpate the existing thumbnail. 107 // Skip if we don't have to udpate the existing thumbnail.
107 ThumbnailScore current_score; 108 ThumbnailScore current_score;
(...skipping 11 matching lines...) Expand all
119 } 120 }
120 121
121 void ThumbnailServiceImpl::ShutdownOnUIThread() { 122 void ThumbnailServiceImpl::ShutdownOnUIThread() {
122 // Since each call uses its own scoped_refptr, we can just clear the reference 123 // Since each call uses its own scoped_refptr, we can just clear the reference
123 // here by assigning null. If another call is completed, it added its own 124 // here by assigning null. If another call is completed, it added its own
124 // reference. 125 // reference.
125 top_sites_ = NULL; 126 top_sites_ = NULL;
126 } 127 }
127 128
128 } // namespace thumbnails 129 } // namespace thumbnails
OLDNEW
« no previous file with comments | « chrome/browser/thumbnails/thumbnail_service_factory.cc ('k') | chrome/browser/thumbnails/thumbnail_service_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698