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

Side by Side Diff: chrome/browser/dom_ui/most_visited_handler.cc

Issue 6283001: Remove TopSites::IsEnabled() as well as related dead code. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: remove OnThumbnailDataAvailable Created 9 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 | Annotate | Revision Log
« no previous file with comments | « chrome/browser/dom_ui/most_visited_handler.h ('k') | chrome/browser/history/history.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 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/dom_ui/most_visited_handler.h" 5 #include "chrome/browser/dom_ui/most_visited_handler.h"
6 6
7 #include <set> 7 #include <set>
8 8
9 #include "app/l10n_util.h" 9 #include "app/l10n_util.h"
10 #include "base/callback.h" 10 #include "base/callback.h"
11 #include "base/command_line.h" 11 #include "base/command_line.h"
12 #include "base/md5.h" 12 #include "base/md5.h"
13 #include "base/singleton.h" 13 #include "base/singleton.h"
14 #include "base/scoped_vector.h" 14 #include "base/scoped_vector.h"
15 #include "base/string16.h" 15 #include "base/string16.h"
16 #include "base/string_number_conversions.h" 16 #include "base/string_number_conversions.h"
17 #include "base/utf_string_conversions.h" 17 #include "base/utf_string_conversions.h"
18 #include "base/threading/thread.h" 18 #include "base/threading/thread.h"
19 #include "base/values.h" 19 #include "base/values.h"
20 #include "chrome/browser/browser_thread.h" 20 #include "chrome/browser/browser_thread.h"
21 #include "chrome/browser/dom_ui/chrome_url_data_manager.h" 21 #include "chrome/browser/dom_ui/chrome_url_data_manager.h"
22 #include "chrome/browser/dom_ui/dom_ui_favicon_source.h" 22 #include "chrome/browser/dom_ui/dom_ui_favicon_source.h"
23 #include "chrome/browser/dom_ui/dom_ui_thumbnail_source.h" 23 #include "chrome/browser/dom_ui/dom_ui_thumbnail_source.h"
24 #include "chrome/browser/dom_ui/new_tab_ui.h" 24 #include "chrome/browser/dom_ui/new_tab_ui.h"
25 #include "chrome/browser/history/page_usage_data.h" 25 #include "chrome/browser/history/page_usage_data.h"
26 #include "chrome/browser/history/history.h"
27 #include "chrome/browser/history/top_sites.h" 26 #include "chrome/browser/history/top_sites.h"
28 #include "chrome/browser/metrics/user_metrics.h" 27 #include "chrome/browser/metrics/user_metrics.h"
29 #include "chrome/browser/prefs/pref_service.h" 28 #include "chrome/browser/prefs/pref_service.h"
30 #include "chrome/browser/profiles/profile.h" 29 #include "chrome/browser/profiles/profile.h"
31 #include "chrome/common/notification_type.h" 30 #include "chrome/common/notification_type.h"
32 #include "chrome/common/notification_source.h" 31 #include "chrome/common/notification_source.h"
33 #include "chrome/common/pref_names.h" 32 #include "chrome/common/pref_names.h"
34 #include "googleurl/src/gurl.h" 33 #include "googleurl/src/gurl.h"
35 #include "grit/chromium_strings.h" 34 #include "grit/chromium_strings.h"
36 #include "grit/generated_resources.h" 35 #include "grit/generated_resources.h"
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after
125 SendPagesValue(); 124 SendPagesValue();
126 got_first_most_visited_request_ = true; 125 got_first_most_visited_request_ = true;
127 } else { 126 } else {
128 StartQueryForMostVisited(); 127 StartQueryForMostVisited();
129 } 128 }
130 } 129 }
131 130
132 void MostVisitedHandler::SendPagesValue() { 131 void MostVisitedHandler::SendPagesValue() {
133 if (pages_value_.get()) { 132 if (pages_value_.get()) {
134 bool has_blacklisted_urls = !url_blacklist_->empty(); 133 bool has_blacklisted_urls = !url_blacklist_->empty();
135 if (history::TopSites::IsEnabled()) { 134 history::TopSites* ts = dom_ui_->GetProfile()->GetTopSites();
136 history::TopSites* ts = dom_ui_->GetProfile()->GetTopSites(); 135 if (ts)
137 if (ts) 136 has_blacklisted_urls = ts->HasBlacklistedItems();
138 has_blacklisted_urls = ts->HasBlacklistedItems();
139 }
140 FundamentalValue first_run(IsFirstRun()); 137 FundamentalValue first_run(IsFirstRun());
141 FundamentalValue has_blacklisted_urls_value(has_blacklisted_urls); 138 FundamentalValue has_blacklisted_urls_value(has_blacklisted_urls);
142 dom_ui_->CallJavascriptFunction(L"mostVisitedPages", 139 dom_ui_->CallJavascriptFunction(L"mostVisitedPages",
143 *(pages_value_.get()), 140 *(pages_value_.get()),
144 first_run, 141 first_run,
145 has_blacklisted_urls_value); 142 has_blacklisted_urls_value);
146 pages_value_.reset(); 143 pages_value_.reset();
147 } 144 }
148 } 145 }
149 146
150 void MostVisitedHandler::StartQueryForMostVisited() { 147 void MostVisitedHandler::StartQueryForMostVisited() {
151 if (history::TopSites::IsEnabled()) { 148 // Use TopSites.
152 // Use TopSites. 149 history::TopSites* ts = dom_ui_->GetProfile()->GetTopSites();
153 history::TopSites* ts = dom_ui_->GetProfile()->GetTopSites(); 150 if (ts) {
154 if (ts) { 151 ts->GetMostVisitedURLs(
155 ts->GetMostVisitedURLs( 152 &topsites_consumer_,
156 &topsites_consumer_, 153 NewCallback(this, &MostVisitedHandler::OnMostVisitedURLsAvailable));
157 NewCallback(this, &MostVisitedHandler::OnMostVisitedURLsAvailable));
158 }
159 return;
160 }
161
162 const int page_count = kMostVisitedPages;
163 // Let's query for the number of items we want plus the blacklist size as
164 // we'll be filtering-out the returned list with the blacklist URLs.
165 // We do not subtract the number of pinned URLs we have because the
166 // HistoryService does not know about those.
167 const int result_count = page_count + url_blacklist_->size();
168 HistoryService* hs =
169 dom_ui_->GetProfile()->GetHistoryService(Profile::EXPLICIT_ACCESS);
170 // |hs| may be null during unit tests.
171 if (hs) {
172 hs->QuerySegmentUsageSince(
173 &cancelable_consumer_,
174 base::Time::Now() - base::TimeDelta::FromDays(kMostVisitedScope),
175 result_count,
176 NewCallback(this, &MostVisitedHandler::OnSegmentUsageAvailable));
177 } 154 }
178 } 155 }
179 156
180 void MostVisitedHandler::HandleBlacklistURL(const ListValue* args) { 157 void MostVisitedHandler::HandleBlacklistURL(const ListValue* args) {
181 std::string url = WideToUTF8(ExtractStringValue(args)); 158 std::string url = WideToUTF8(ExtractStringValue(args));
182 BlacklistURL(GURL(url)); 159 BlacklistURL(GURL(url));
183 } 160 }
184 161
185 void MostVisitedHandler::HandleRemoveURLsFromBlacklist(const ListValue* args) { 162 void MostVisitedHandler::HandleRemoveURLsFromBlacklist(const ListValue* args) {
186 DCHECK(args->GetSize() != 0); 163 DCHECK(args->GetSize() != 0);
187 164
188 for (ListValue::const_iterator iter = args->begin(); 165 for (ListValue::const_iterator iter = args->begin();
189 iter != args->end(); ++iter) { 166 iter != args->end(); ++iter) {
190 std::string url; 167 std::string url;
191 bool r = (*iter)->GetAsString(&url); 168 bool r = (*iter)->GetAsString(&url);
192 if (!r) { 169 if (!r) {
193 NOTREACHED(); 170 NOTREACHED();
194 return; 171 return;
195 } 172 }
196 UserMetrics::RecordAction(UserMetricsAction("MostVisited_UrlRemoved"), 173 UserMetrics::RecordAction(UserMetricsAction("MostVisited_UrlRemoved"),
197 dom_ui_->GetProfile()); 174 dom_ui_->GetProfile());
198 if (history::TopSites::IsEnabled()) { 175 history::TopSites* ts = dom_ui_->GetProfile()->GetTopSites();
199 history::TopSites* ts = dom_ui_->GetProfile()->GetTopSites(); 176 if (ts)
200 if (ts) 177 ts->RemoveBlacklistedURL(GURL(url));
201 ts->RemoveBlacklistedURL(GURL(url));
202 return;
203 }
204
205 r = url_blacklist_->Remove(GetDictionaryKeyForURL(url), NULL);
206 DCHECK(r) << "Unknown URL removed from the NTP Most Visited blacklist.";
207 } 178 }
208 } 179 }
209 180
210 void MostVisitedHandler::HandleClearBlacklist(const ListValue* args) { 181 void MostVisitedHandler::HandleClearBlacklist(const ListValue* args) {
211 UserMetrics::RecordAction(UserMetricsAction("MostVisited_BlacklistCleared"), 182 UserMetrics::RecordAction(UserMetricsAction("MostVisited_BlacklistCleared"),
212 dom_ui_->GetProfile()); 183 dom_ui_->GetProfile());
213 184
214 if (history::TopSites::IsEnabled()) { 185 history::TopSites* ts = dom_ui_->GetProfile()->GetTopSites();
215 history::TopSites* ts = dom_ui_->GetProfile()->GetTopSites(); 186 if (ts)
216 if (ts) 187 ts->ClearBlacklistedURLs();
217 ts->ClearBlacklistedURLs();
218 return;
219 }
220
221 url_blacklist_->Clear();
222 } 188 }
223 189
224 void MostVisitedHandler::HandleAddPinnedURL(const ListValue* args) { 190 void MostVisitedHandler::HandleAddPinnedURL(const ListValue* args) {
225 DCHECK_EQ(5U, args->GetSize()) << "Wrong number of params to addPinnedURL"; 191 DCHECK_EQ(5U, args->GetSize()) << "Wrong number of params to addPinnedURL";
226 MostVisitedPage mvp; 192 MostVisitedPage mvp;
227 std::string tmp_string; 193 std::string tmp_string;
228 string16 tmp_string16; 194 string16 tmp_string16;
229 int index; 195 int index;
230 196
231 bool r = args->GetString(0, &tmp_string); 197 bool r = args->GetString(0, &tmp_string);
(...skipping 17 matching lines...) Expand all
249 mvp.thumbnail_url = GURL(tmp_string); 215 mvp.thumbnail_url = GURL(tmp_string);
250 216
251 r = args->GetString(4, &tmp_string); 217 r = args->GetString(4, &tmp_string);
252 DCHECK(r) << "Missing index in addPinnedURL from the NTP Most Visited."; 218 DCHECK(r) << "Missing index in addPinnedURL from the NTP Most Visited.";
253 base::StringToInt(tmp_string, &index); 219 base::StringToInt(tmp_string, &index);
254 220
255 AddPinnedURL(mvp, index); 221 AddPinnedURL(mvp, index);
256 } 222 }
257 223
258 void MostVisitedHandler::AddPinnedURL(const MostVisitedPage& page, int index) { 224 void MostVisitedHandler::AddPinnedURL(const MostVisitedPage& page, int index) {
259 if (history::TopSites::IsEnabled()) { 225 history::TopSites* ts = dom_ui_->GetProfile()->GetTopSites();
260 history::TopSites* ts = dom_ui_->GetProfile()->GetTopSites(); 226 if (ts)
261 if (ts) 227 ts->AddPinnedURL(page.url, index);
262 ts->AddPinnedURL(page.url, index);
263 return;
264 }
265
266 // Remove any pinned URL at the given index.
267 MostVisitedPage old_page;
268 if (GetPinnedURLAtIndex(index, &old_page)) {
269 RemovePinnedURL(old_page.url);
270 }
271
272 DictionaryValue* new_value = new DictionaryValue();
273 SetMostVisistedPage(new_value, page);
274
275 new_value->SetInteger("index", index);
276 pinned_urls_->Set(GetDictionaryKeyForURL(page.url.spec()), new_value);
277
278 // TODO(arv): Notify observers?
279
280 // Don't call HandleGetMostVisited. Let the client call this as needed.
281 } 228 }
282 229
283 void MostVisitedHandler::HandleRemovePinnedURL(const ListValue* args) { 230 void MostVisitedHandler::HandleRemovePinnedURL(const ListValue* args) {
284 std::string url = WideToUTF8(ExtractStringValue(args)); 231 std::string url = WideToUTF8(ExtractStringValue(args));
285 RemovePinnedURL(GURL(url)); 232 RemovePinnedURL(GURL(url));
286 } 233 }
287 234
288 void MostVisitedHandler::RemovePinnedURL(const GURL& url) { 235 void MostVisitedHandler::RemovePinnedURL(const GURL& url) {
289 if (history::TopSites::IsEnabled()) { 236 history::TopSites* ts = dom_ui_->GetProfile()->GetTopSites();
290 history::TopSites* ts = dom_ui_->GetProfile()->GetTopSites(); 237 if (ts)
291 if (ts) 238 ts->RemovePinnedURL(url);
292 ts->RemovePinnedURL(url);
293 return;
294 }
295
296 const std::string key = GetDictionaryKeyForURL(url.spec());
297 if (pinned_urls_->HasKey(key))
298 pinned_urls_->Remove(key, NULL);
299
300 // TODO(arv): Notify observers?
301
302 // Don't call HandleGetMostVisited. Let the client call this as needed.
303 } 239 }
304 240
305 bool MostVisitedHandler::GetPinnedURLAtIndex(int index, 241 bool MostVisitedHandler::GetPinnedURLAtIndex(int index,
306 MostVisitedPage* page) { 242 MostVisitedPage* page) {
307 // This iterates over all the pinned URLs. It might seem like it is worth 243 // This iterates over all the pinned URLs. It might seem like it is worth
308 // having a map from the index to the item but the number of items is limited 244 // having a map from the index to the item but the number of items is limited
309 // to the number of items the most visited section is showing on the NTP so 245 // to the number of items the most visited section is showing on the NTP so
310 // this will be fast enough for now. 246 // this will be fast enough for now.
311 for (DictionaryValue::key_iterator it = pinned_urls_->begin_keys(); 247 for (DictionaryValue::key_iterator it = pinned_urls_->begin_keys();
312 it != pinned_urls_->end_keys(); ++it) { 248 it != pinned_urls_->end_keys(); ++it) {
(...skipping 23 matching lines...) Expand all
336 return dict->GetString("title", &page->title); 272 return dict->GetString("title", &page->title);
337 } 273 }
338 } else { 274 } else {
339 NOTREACHED() << "DictionaryValue iterators are filthy liars."; 275 NOTREACHED() << "DictionaryValue iterators are filthy liars.";
340 } 276 }
341 } 277 }
342 278
343 return false; 279 return false;
344 } 280 }
345 281
346 void MostVisitedHandler::OnSegmentUsageAvailable(
347 CancelableRequestProvider::Handle handle,
348 std::vector<PageUsageData*>* data) {
349 SetPagesValue(data);
350 if (got_first_most_visited_request_) {
351 SendPagesValue();
352 }
353 }
354
355 void MostVisitedHandler::SetPagesValue(std::vector<PageUsageData*>* data) {
356 most_visited_urls_.clear();
357 pages_value_.reset(new ListValue);
358 std::set<GURL> seen_urls;
359
360 size_t data_index = 0;
361 size_t output_index = 0;
362 size_t pre_populated_index = 0;
363 const std::vector<MostVisitedPage> pre_populated_pages =
364 MostVisitedHandler::GetPrePopulatedPages();
365
366 while (output_index < kMostVisitedPages) {
367 bool found = false;
368 bool pinned = false;
369 std::string pinned_url;
370 std::string pinned_title;
371 MostVisitedPage mvp;
372
373 if (MostVisitedHandler::GetPinnedURLAtIndex(output_index, &mvp)) {
374 pinned = true;
375 found = true;
376 }
377
378 while (!found && data_index < data->size()) {
379 const PageUsageData& page = *(*data)[data_index];
380 data_index++;
381 mvp.url = page.GetURL();
382
383 // Don't include blacklisted or pinned URLs.
384 std::string key = GetDictionaryKeyForURL(mvp.url.spec());
385 if (pinned_urls_->HasKey(key) || url_blacklist_->HasKey(key))
386 continue;
387
388 mvp.title = page.GetTitle();
389 found = true;
390 }
391
392 while (!found && pre_populated_index < pre_populated_pages.size()) {
393 mvp = pre_populated_pages[pre_populated_index++];
394 std::string key = GetDictionaryKeyForURL(mvp.url.spec());
395 if (pinned_urls_->HasKey(key) || url_blacklist_->HasKey(key) ||
396 seen_urls.find(mvp.url) != seen_urls.end())
397 continue;
398
399 found = true;
400 }
401
402 if (found) {
403 // Add fillers as needed.
404 while (pages_value_->GetSize() < output_index) {
405 DictionaryValue* filler_value = new DictionaryValue();
406 filler_value->SetBoolean("filler", true);
407 pages_value_->Append(filler_value);
408 }
409
410 DictionaryValue* page_value = new DictionaryValue();
411 SetMostVisistedPage(page_value, mvp);
412 page_value->SetBoolean("pinned", pinned);
413 pages_value_->Append(page_value);
414 most_visited_urls_.push_back(mvp.url);
415 seen_urls.insert(mvp.url);
416 }
417 output_index++;
418 }
419 }
420
421 void MostVisitedHandler::SetPagesValueFromTopSites( 282 void MostVisitedHandler::SetPagesValueFromTopSites(
422 const history::MostVisitedURLList& data) { 283 const history::MostVisitedURLList& data) {
423 DCHECK(history::TopSites::IsEnabled());
424 pages_value_.reset(new ListValue); 284 pages_value_.reset(new ListValue);
425 for (size_t i = 0; i < data.size(); i++) { 285 for (size_t i = 0; i < data.size(); i++) {
426 const history::MostVisitedURL& url = data[i]; 286 const history::MostVisitedURL& url = data[i];
427 DictionaryValue* page_value = new DictionaryValue(); 287 DictionaryValue* page_value = new DictionaryValue();
428 if (url.url.is_empty()) { 288 if (url.url.is_empty()) {
429 page_value->SetBoolean("filler", true); 289 page_value->SetBoolean("filler", true);
430 pages_value_->Append(page_value); 290 pages_value_->Append(page_value);
431 continue; 291 continue;
432 } 292 }
433 293
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
466 // If we found no pages we treat this as the first run. 326 // If we found no pages we treat this as the first run.
467 bool first_run = NewTabUI::NewTabHTMLSource::first_run() && 327 bool first_run = NewTabUI::NewTabHTMLSource::first_run() &&
468 pages_value_->GetSize() == 328 pages_value_->GetSize() ==
469 MostVisitedHandler::GetPrePopulatedPages().size(); 329 MostVisitedHandler::GetPrePopulatedPages().size();
470 // but first_run should only be true once. 330 // but first_run should only be true once.
471 NewTabUI::NewTabHTMLSource::set_first_run(false); 331 NewTabUI::NewTabHTMLSource::set_first_run(false);
472 return first_run; 332 return first_run;
473 } 333 }
474 334
475 // static 335 // static
476 void MostVisitedHandler::SetMostVisistedPage(
477 DictionaryValue* dict,
478 const MostVisitedHandler::MostVisitedPage& page) {
479 NewTabUI::SetURLTitleAndDirection(dict, page.title, page.url);
480 if (!page.favicon_url.is_empty())
481 dict->SetString("faviconUrl", page.favicon_url.spec());
482 if (!page.thumbnail_url.is_empty())
483 dict->SetString("thumbnailUrl", page.thumbnail_url.spec());
484 }
485
486
487 // static
488 const std::vector<MostVisitedHandler::MostVisitedPage>& 336 const std::vector<MostVisitedHandler::MostVisitedPage>&
489 MostVisitedHandler::GetPrePopulatedPages() { 337 MostVisitedHandler::GetPrePopulatedPages() {
490 // TODO(arv): This needs to get the data from some configurable place. 338 // TODO(arv): This needs to get the data from some configurable place.
491 // http://crbug.com/17630 339 // http://crbug.com/17630
492 static std::vector<MostVisitedPage> pages; 340 static std::vector<MostVisitedPage> pages;
493 if (pages.empty()) { 341 if (pages.empty()) {
494 MostVisitedPage welcome_page = { 342 MostVisitedPage welcome_page = {
495 l10n_util::GetStringUTF16(IDS_NEW_TAB_CHROME_WELCOME_PAGE_TITLE), 343 l10n_util::GetStringUTF16(IDS_NEW_TAB_CHROME_WELCOME_PAGE_TITLE),
496 GURL(l10n_util::GetStringUTF8(IDS_CHROME_WELCOME_URL)), 344 GURL(l10n_util::GetStringUTF8(IDS_CHROME_WELCOME_URL)),
497 GURL("chrome://theme/IDR_NEWTAB_CHROME_WELCOME_PAGE_THUMBNAIL"), 345 GURL("chrome://theme/IDR_NEWTAB_CHROME_WELCOME_PAGE_THUMBNAIL"),
(...skipping 17 matching lines...) Expand all
515 if (type != NotificationType::HISTORY_URLS_DELETED) { 363 if (type != NotificationType::HISTORY_URLS_DELETED) {
516 NOTREACHED(); 364 NOTREACHED();
517 return; 365 return;
518 } 366 }
519 367
520 // Some URLs were deleted from history. Reload the most visited list. 368 // Some URLs were deleted from history. Reload the most visited list.
521 HandleGetMostVisited(NULL); 369 HandleGetMostVisited(NULL);
522 } 370 }
523 371
524 void MostVisitedHandler::BlacklistURL(const GURL& url) { 372 void MostVisitedHandler::BlacklistURL(const GURL& url) {
525 if (history::TopSites::IsEnabled()) { 373 history::TopSites* ts = dom_ui_->GetProfile()->GetTopSites();
526 history::TopSites* ts = dom_ui_->GetProfile()->GetTopSites(); 374 if (ts)
527 if (ts) 375 ts->AddBlacklistedURL(url);
528 ts->AddBlacklistedURL(url);
529 return;
530 }
531
532 RemovePinnedURL(url);
533
534 std::string key = GetDictionaryKeyForURL(url.spec());
535 if (url_blacklist_->HasKey(key))
536 return;
537 url_blacklist_->SetBoolean(key, true);
538 } 376 }
539 377
540 std::string MostVisitedHandler::GetDictionaryKeyForURL(const std::string& url) { 378 std::string MostVisitedHandler::GetDictionaryKeyForURL(const std::string& url) {
541 return MD5String(url); 379 return MD5String(url);
542 } 380 }
543 381
544 // static 382 // static
545 void MostVisitedHandler::RegisterUserPrefs(PrefService* prefs) { 383 void MostVisitedHandler::RegisterUserPrefs(PrefService* prefs) {
546 prefs->RegisterDictionaryPref(prefs::kNTPMostVisitedURLsBlacklist); 384 prefs->RegisterDictionaryPref(prefs::kNTPMostVisitedURLsBlacklist);
547 prefs->RegisterDictionaryPref(prefs::kNTPMostVisitedPinnedURLs); 385 prefs->RegisterDictionaryPref(prefs::kNTPMostVisitedPinnedURLs);
548 } 386 }
549 387
550 // static 388 // static
551 std::vector<GURL> MostVisitedHandler::GetPrePopulatedUrls() { 389 std::vector<GURL> MostVisitedHandler::GetPrePopulatedUrls() {
552 const std::vector<MostVisitedPage> pages = 390 const std::vector<MostVisitedPage> pages =
553 MostVisitedHandler::GetPrePopulatedPages(); 391 MostVisitedHandler::GetPrePopulatedPages();
554 std::vector<GURL> page_urls; 392 std::vector<GURL> page_urls;
555 for (size_t i = 0; i < pages.size(); ++i) 393 for (size_t i = 0; i < pages.size(); ++i)
556 page_urls.push_back(pages[i].url); 394 page_urls.push_back(pages[i].url);
557 return page_urls; 395 return page_urls;
558 } 396 }
OLDNEW
« no previous file with comments | « chrome/browser/dom_ui/most_visited_handler.h ('k') | chrome/browser/history/history.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698