| Index: chrome/browser/ui/toolbar/recent_tabs_sub_menu_model.h
|
| diff --git a/chrome/browser/ui/toolbar/recent_tabs_sub_menu_model.h b/chrome/browser/ui/toolbar/recent_tabs_sub_menu_model.h
|
| index 0c5b74c1196f47f0c2159d9664e3d0889faefdbe..7d21280f35bc841bdc8140bf42baa48caba53e67 100644
|
| --- a/chrome/browser/ui/toolbar/recent_tabs_sub_menu_model.h
|
| +++ b/chrome/browser/ui/toolbar/recent_tabs_sub_menu_model.h
|
| @@ -9,11 +9,13 @@
|
|
|
| #include "base/macros.h"
|
| #include "base/memory/weak_ptr.h"
|
| +#include "base/scoped_observer.h"
|
| #include "base/task/cancelable_task_tracker.h"
|
| #include "base/timer/elapsed_timer.h"
|
| #include "components/favicon/core/favicon_service.h"
|
| #include "components/sessions/core/tab_restore_service.h"
|
| #include "components/sessions/core/tab_restore_service_observer.h"
|
| +#include "components/sync/driver/sync_service_observer.h"
|
| #include "components/sync_sessions/synced_session.h"
|
| #include "ui/base/accelerators/accelerator.h"
|
| #include "ui/base/models/simple_menu_model.h"
|
| @@ -36,6 +38,11 @@ namespace sync_sessions {
|
| class OpenTabsUIDelegate;
|
| }
|
|
|
| +namespace syncer {
|
| +class SyncService;
|
| +class SyncServiceBase;
|
| +} // namespace syncer
|
| +
|
| namespace ui {
|
| class AcceleratorProvider;
|
| }
|
| @@ -45,7 +52,8 @@ class AcceleratorProvider;
|
| // opened tabs of other devices.
|
| class RecentTabsSubMenuModel : public ui::SimpleMenuModel,
|
| public ui::SimpleMenuModel::Delegate,
|
| - public sessions::TabRestoreServiceObserver {
|
| + public sessions::TabRestoreServiceObserver,
|
| + public syncer::SyncServiceObserver {
|
| public:
|
| // Command Id for recently closed items header or disabled item to which the
|
| // accelerator string will be appended.
|
| @@ -57,10 +65,9 @@ class RecentTabsSubMenuModel : public ui::SimpleMenuModel,
|
| static int GetFirstRecentTabsCommandId();
|
|
|
| // If |open_tabs_delegate| is NULL, the default delegate for |browser|'s
|
| - // profile will be used. Testing may require a specific |open_tabs_delegate|.
|
| + // profile will be used.
|
| RecentTabsSubMenuModel(ui::AcceleratorProvider* accelerator_provider,
|
| - Browser* browser,
|
| - sync_sessions::OpenTabsUIDelegate* open_tabs_delegate);
|
| + Browser* browser);
|
| ~RecentTabsSubMenuModel() override;
|
|
|
| // Overridden from ui::SimpleMenuModel::Delegate:
|
| @@ -122,6 +129,9 @@ class RecentTabsSubMenuModel : public ui::SimpleMenuModel,
|
| // Clear all recently closed tabs and windows.
|
| void ClearLocalEntries();
|
|
|
| + // Clears all tabs from other devices.
|
| + void ClearTabsFromOtherDevices();
|
| +
|
| // Converts |command_id| of menu item to index in local or other devices'
|
| // TabNavigationItems, and returns the corresponding local or other devices'
|
| // TabNavigationItems in |tab_items|.
|
| @@ -139,6 +149,10 @@ class RecentTabsSubMenuModel : public ui::SimpleMenuModel,
|
| void TabRestoreServiceDestroyed(
|
| sessions::TabRestoreService* service) override;
|
|
|
| + // Overridden from syncer::SyncServiceObserver:
|
| + void OnSyncConfigurationCompleted(syncer::SyncService* sync) override;
|
| + void OnForeignSessionUpdated(syncer::SyncService* sync) override;
|
| +
|
| Browser* browser_; // Weak.
|
|
|
| sync_sessions::OpenTabsUIDelegate* open_tabs_delegate_; // Weak.
|
| @@ -178,6 +192,15 @@ class RecentTabsSubMenuModel : public ui::SimpleMenuModel,
|
| // Time the menu is open for until a recent tab is selected.
|
| base::ElapsedTimer menu_opened_timer_;
|
|
|
| +// Mac doesn't support the dynamic menu.
|
| +#if !defined(OS_MACOSX)
|
| + ScopedObserver<sessions::TabRestoreService, RecentTabsSubMenuModel>
|
| + tab_restore_service_observer_;
|
| +
|
| + ScopedObserver<syncer::SyncServiceBase, RecentTabsSubMenuModel>
|
| + sync_observer_;
|
| +#endif
|
| +
|
| base::WeakPtrFactory<RecentTabsSubMenuModel> weak_ptr_factory_;
|
|
|
| DISALLOW_COPY_AND_ASSIGN(RecentTabsSubMenuModel);
|
|
|