| OLD | NEW |
| 1 // Copyright 2012 The Chromium Authors. All rights reserved. | 1 // Copyright 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/win/jumplist.h" | 5 #include "chrome/browser/win/jumplist.h" |
| 6 | 6 |
| 7 #include "base/bind.h" | 7 #include "base/bind.h" |
| 8 #include "base/bind_helpers.h" | 8 #include "base/bind_helpers.h" |
| 9 #include "base/command_line.h" | 9 #include "base/command_line.h" |
| 10 #include "base/files/file_util.h" | 10 #include "base/files/file_util.h" |
| (...skipping 381 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 392 // The last URL of the tab object. | 392 // The last URL of the tab object. |
| 393 // * title | 393 // * title |
| 394 // The title of the last URL. | 394 // The title of the last URL. |
| 395 // * icon | 395 // * icon |
| 396 // An empty string. This value is to be updated in OnFaviconDataAvailable(). | 396 // An empty string. This value is to be updated in OnFaviconDataAvailable(). |
| 397 // This code is copied from | 397 // This code is copied from |
| 398 // RecentlyClosedTabsHandler::TabRestoreServiceChanged() to emulate it. | 398 // RecentlyClosedTabsHandler::TabRestoreServiceChanged() to emulate it. |
| 399 const int kRecentlyClosedCount = 4; | 399 const int kRecentlyClosedCount = 4; |
| 400 sessions::TabRestoreService* tab_restore_service = | 400 sessions::TabRestoreService* tab_restore_service = |
| 401 TabRestoreServiceFactory::GetForProfile(profile_); | 401 TabRestoreServiceFactory::GetForProfile(profile_); |
| 402 const sessions::TabRestoreService::Entries& entries = | 402 for (const auto& entry : tab_restore_service->entries()) { |
| 403 tab_restore_service->entries(); | 403 switch (entry->type) { |
| 404 for (sessions::TabRestoreService::Entries::const_iterator it = | 404 case sessions::TabRestoreService::TAB: |
| 405 entries.begin(); | 405 AddTab(static_cast<const sessions::TabRestoreService::Tab&>(*entry), |
| 406 it != entries.end(); ++it) { | 406 &temp_list, kRecentlyClosedCount); |
| 407 const sessions::TabRestoreService::Entry* entry = *it; | 407 break; |
| 408 if (entry->type == sessions::TabRestoreService::TAB) { | 408 case sessions::TabRestoreService::WINDOW: |
| 409 AddTab(static_cast<const sessions::TabRestoreService::Tab*>(entry), | 409 AddWindow( |
| 410 &temp_list, kRecentlyClosedCount); | 410 static_cast<const sessions::TabRestoreService::Window&>(*entry), |
| 411 } else if (entry->type == sessions::TabRestoreService::WINDOW) { | 411 &temp_list, kRecentlyClosedCount); |
| 412 AddWindow(static_cast<const sessions::TabRestoreService::Window*>(entry), | 412 break; |
| 413 &temp_list, kRecentlyClosedCount); | |
| 414 } | 413 } |
| 415 } | 414 } |
| 416 // Lock recently_closed_pages and copy temp_list into it. | 415 // Lock recently_closed_pages and copy temp_list into it. |
| 417 { | 416 { |
| 418 JumpListData* data = &jumplist_data_->data; | 417 JumpListData* data = &jumplist_data_->data; |
| 419 base::AutoLock auto_lock(data->list_lock_); | 418 base::AutoLock auto_lock(data->list_lock_); |
| 420 data->recently_closed_pages_ = temp_list; | 419 data->recently_closed_pages_ = temp_list; |
| 421 } | 420 } |
| 422 | 421 |
| 423 // Send a query that retrieves the first favicon. | 422 // Send a query that retrieves the first favicon. |
| 424 StartLoadingFavicon(); | 423 StartLoadingFavicon(); |
| 425 } | 424 } |
| 426 | 425 |
| 427 void JumpList::TabRestoreServiceDestroyed( | 426 void JumpList::TabRestoreServiceDestroyed( |
| 428 sessions::TabRestoreService* service) {} | 427 sessions::TabRestoreService* service) {} |
| 429 | 428 |
| 430 bool JumpList::AddTab(const sessions::TabRestoreService::Tab* tab, | 429 bool JumpList::AddTab(const sessions::TabRestoreService::Tab& tab, |
| 431 ShellLinkItemList* list, | 430 ShellLinkItemList* list, |
| 432 size_t max_items) { | 431 size_t max_items) { |
| 433 DCHECK(CalledOnValidThread()); | 432 DCHECK(CalledOnValidThread()); |
| 434 | 433 |
| 435 // This code adds the URL and the title strings of the given tab to the | 434 // This code adds the URL and the title strings of the given tab to the |
| 436 // specified list. | 435 // specified list. |
| 437 if (list->size() >= max_items) | 436 if (list->size() >= max_items) |
| 438 return false; | 437 return false; |
| 439 | 438 |
| 440 scoped_refptr<ShellLinkItem> link = CreateShellLink(); | 439 scoped_refptr<ShellLinkItem> link = CreateShellLink(); |
| 441 const sessions::SerializedNavigationEntry& current_navigation = | 440 const sessions::SerializedNavigationEntry& current_navigation = |
| 442 tab->navigations.at(tab->current_navigation_index); | 441 tab.navigations.at(tab.current_navigation_index); |
| 443 std::string url = current_navigation.virtual_url().spec(); | 442 std::string url = current_navigation.virtual_url().spec(); |
| 444 link->GetCommandLine()->AppendArgNative(base::UTF8ToWide(url)); | 443 link->GetCommandLine()->AppendArgNative(base::UTF8ToWide(url)); |
| 445 link->GetCommandLine()->AppendSwitchASCII( | 444 link->GetCommandLine()->AppendSwitchASCII( |
| 446 switches::kWinJumplistAction, jumplist::kRecentlyClosedCategory); | 445 switches::kWinJumplistAction, jumplist::kRecentlyClosedCategory); |
| 447 link->set_title(current_navigation.title()); | 446 link->set_title(current_navigation.title()); |
| 448 list->push_back(link); | 447 list->push_back(link); |
| 449 { | 448 { |
| 450 JumpListData* data = &jumplist_data_->data; | 449 JumpListData* data = &jumplist_data_->data; |
| 451 base::AutoLock auto_lock(data->list_lock_); | 450 base::AutoLock auto_lock(data->list_lock_); |
| 452 data->icon_urls_.push_back(std::make_pair(std::move(url), std::move(link))); | 451 data->icon_urls_.push_back(std::make_pair(std::move(url), std::move(link))); |
| 453 } | 452 } |
| 454 return true; | 453 return true; |
| 455 } | 454 } |
| 456 | 455 |
| 457 void JumpList::AddWindow(const sessions::TabRestoreService::Window* window, | 456 void JumpList::AddWindow(const sessions::TabRestoreService::Window& window, |
| 458 ShellLinkItemList* list, | 457 ShellLinkItemList* list, |
| 459 size_t max_items) { | 458 size_t max_items) { |
| 460 DCHECK(CalledOnValidThread()); | 459 DCHECK(CalledOnValidThread()); |
| 461 | 460 |
| 462 // This code enumerates al the tabs in the given window object and add their | 461 // This code enumerates al the tabs in the given window object and add their |
| 463 // URLs and titles to the list. | 462 // URLs and titles to the list. |
| 464 DCHECK(!window->tabs.empty()); | 463 DCHECK(!window.tabs.empty()); |
| 465 | 464 |
| 466 for (size_t i = 0; i < window->tabs.size(); ++i) { | 465 for (const auto& tab : window.tabs) { |
| 467 if (!AddTab(&window->tabs[i], list, max_items)) | 466 if (!AddTab(*tab, list, max_items)) |
| 468 return; | 467 return; |
| 469 } | 468 } |
| 470 } | 469 } |
| 471 | 470 |
| 472 void JumpList::StartLoadingFavicon() { | 471 void JumpList::StartLoadingFavicon() { |
| 473 DCHECK(CalledOnValidThread()); | 472 DCHECK(CalledOnValidThread()); |
| 474 | 473 |
| 475 GURL url; | 474 GURL url; |
| 476 bool waiting_for_icons = true; | 475 bool waiting_for_icons = true; |
| 477 { | 476 { |
| (...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 581 void JumpList::TopSitesLoaded(history::TopSites* top_sites) { | 580 void JumpList::TopSitesLoaded(history::TopSites* top_sites) { |
| 582 } | 581 } |
| 583 | 582 |
| 584 void JumpList::TopSitesChanged(history::TopSites* top_sites, | 583 void JumpList::TopSitesChanged(history::TopSites* top_sites, |
| 585 ChangeReason change_reason) { | 584 ChangeReason change_reason) { |
| 586 top_sites->GetMostVisitedURLs( | 585 top_sites->GetMostVisitedURLs( |
| 587 base::Bind(&JumpList::OnMostVisitedURLsAvailable, | 586 base::Bind(&JumpList::OnMostVisitedURLsAvailable, |
| 588 weak_ptr_factory_.GetWeakPtr()), | 587 weak_ptr_factory_.GetWeakPtr()), |
| 589 false); | 588 false); |
| 590 } | 589 } |
| OLD | NEW |