| OLD | NEW |
| 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/jumplist_win.h" | 5 #include "chrome/browser/jumplist_win.h" |
| 6 | 6 |
| 7 #include <windows.h> | 7 #include <windows.h> |
| 8 #include <shobjidl.h> | 8 #include <shobjidl.h> |
| 9 #include <propkey.h> | 9 #include <propkey.h> |
| 10 #include <propvarutil.h> | 10 #include <propvarutil.h> |
| (...skipping 448 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 459 return false; | 459 return false; |
| 460 | 460 |
| 461 return true; | 461 return true; |
| 462 } | 462 } |
| 463 | 463 |
| 464 } // namespace | 464 } // namespace |
| 465 | 465 |
| 466 JumpList::JumpList() | 466 JumpList::JumpList() |
| 467 : weak_ptr_factory_(this), | 467 : weak_ptr_factory_(this), |
| 468 profile_(NULL), | 468 profile_(NULL), |
| 469 task_id_(CancelableTaskTracker::kBadTaskId) { | 469 task_id_(base::CancelableTaskTracker::kBadTaskId) {} |
| 470 } | |
| 471 | 470 |
| 472 JumpList::~JumpList() { | 471 JumpList::~JumpList() { |
| 473 Terminate(); | 472 Terminate(); |
| 474 } | 473 } |
| 475 | 474 |
| 476 // static | 475 // static |
| 477 bool JumpList::Enabled() { | 476 bool JumpList::Enabled() { |
| 478 return (base::win::GetVersion() >= base::win::VERSION_WIN7 && | 477 return (base::win::GetVersion() >= base::win::VERSION_WIN7 && |
| 479 !CommandLine::ForCurrentProcess()->HasSwitch( | 478 !CommandLine::ForCurrentProcess()->HasSwitch( |
| 480 switches::kDisableCustomJumpList)); | 479 switches::kDisableCustomJumpList)); |
| (...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 546 TabRestoreService* tab_restore_service = | 545 TabRestoreService* tab_restore_service = |
| 547 TabRestoreServiceFactory::GetForProfile(profile_); | 546 TabRestoreServiceFactory::GetForProfile(profile_); |
| 548 if (tab_restore_service) | 547 if (tab_restore_service) |
| 549 tab_restore_service->RemoveObserver(this); | 548 tab_restore_service->RemoveObserver(this); |
| 550 registrar_.reset(); | 549 registrar_.reset(); |
| 551 } | 550 } |
| 552 profile_ = NULL; | 551 profile_ = NULL; |
| 553 } | 552 } |
| 554 | 553 |
| 555 void JumpList::CancelPendingUpdate() { | 554 void JumpList::CancelPendingUpdate() { |
| 556 if (task_id_ != CancelableTaskTracker::kBadTaskId) { | 555 if (task_id_ != base::CancelableTaskTracker::kBadTaskId) { |
| 557 cancelable_task_tracker_.TryCancel(task_id_); | 556 cancelable_task_tracker_.TryCancel(task_id_); |
| 558 task_id_ = CancelableTaskTracker::kBadTaskId; | 557 task_id_ = base::CancelableTaskTracker::kBadTaskId; |
| 559 } | 558 } |
| 560 } | 559 } |
| 561 | 560 |
| 562 void JumpList::Terminate() { | 561 void JumpList::Terminate() { |
| 563 CancelPendingUpdate(); | 562 CancelPendingUpdate(); |
| 564 RemoveObserver(); | 563 RemoveObserver(); |
| 565 } | 564 } |
| 566 | 565 |
| 567 void JumpList::OnMostVisitedURLsAvailable( | 566 void JumpList::OnMostVisitedURLsAvailable( |
| 568 const history::MostVisitedURLList& data) { | 567 const history::MostVisitedURLList& data) { |
| (...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 690 gfx::kFaviconSize), | 689 gfx::kFaviconSize), |
| 691 base::Bind(&JumpList::OnFaviconDataAvailable, | 690 base::Bind(&JumpList::OnFaviconDataAvailable, |
| 692 base::Unretained(this)), | 691 base::Unretained(this)), |
| 693 &cancelable_task_tracker_); | 692 &cancelable_task_tracker_); |
| 694 } | 693 } |
| 695 | 694 |
| 696 void JumpList::OnFaviconDataAvailable( | 695 void JumpList::OnFaviconDataAvailable( |
| 697 const chrome::FaviconImageResult& image_result) { | 696 const chrome::FaviconImageResult& image_result) { |
| 698 // If there is currently a favicon request in progress, it is now outdated, | 697 // If there is currently a favicon request in progress, it is now outdated, |
| 699 // as we have received another, so nullify the handle from the old request. | 698 // as we have received another, so nullify the handle from the old request. |
| 700 task_id_ = CancelableTaskTracker::kBadTaskId; | 699 task_id_ = base::CancelableTaskTracker::kBadTaskId; |
| 701 // lock the list to set icon data and pop the url | 700 // lock the list to set icon data and pop the url |
| 702 { | 701 { |
| 703 base::AutoLock auto_lock(list_lock_); | 702 base::AutoLock auto_lock(list_lock_); |
| 704 // Attach the received data to the ShellLinkItem object. | 703 // Attach the received data to the ShellLinkItem object. |
| 705 // This data will be decoded by the RunUpdate method. | 704 // This data will be decoded by the RunUpdate method. |
| 706 if (!image_result.image.IsEmpty()) { | 705 if (!image_result.image.IsEmpty()) { |
| 707 if (!icon_urls_.empty() && icon_urls_.front().second) | 706 if (!icon_urls_.empty() && icon_urls_.front().second) |
| 708 icon_urls_.front().second->SetIconData(image_result.image.AsBitmap()); | 707 icon_urls_.front().second->SetIconData(image_result.image.AsBitmap()); |
| 709 } | 708 } |
| 710 | 709 |
| (...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 755 } | 754 } |
| 756 | 755 |
| 757 void JumpList::CreateIconFiles(const ShellLinkItemList& item_list) { | 756 void JumpList::CreateIconFiles(const ShellLinkItemList& item_list) { |
| 758 for (ShellLinkItemList::const_iterator item = item_list.begin(); | 757 for (ShellLinkItemList::const_iterator item = item_list.begin(); |
| 759 item != item_list.end(); ++item) { | 758 item != item_list.end(); ++item) { |
| 760 base::FilePath icon_path; | 759 base::FilePath icon_path; |
| 761 if (CreateIconFile((*item)->data(), icon_dir_, &icon_path)) | 760 if (CreateIconFile((*item)->data(), icon_dir_, &icon_path)) |
| 762 (*item)->SetIcon(icon_path.value(), 0, true); | 761 (*item)->SetIcon(icon_path.value(), 0, true); |
| 763 } | 762 } |
| 764 } | 763 } |
| OLD | NEW |