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

Unified Diff: chrome/browser/ui/toolbar/recent_tabs_sub_menu_model.h

Issue 2768633003: Dynamic updating recent menu for tabs from other devices. (Closed)
Patch Set: Fixes compilation and test on Mac. Created 3 years, 9 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 side-by-side diff with in-line comments
Download patch
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);
« no previous file with comments | « chrome/browser/ui/toolbar/recent_tabs_builder_test_helper.cc ('k') | chrome/browser/ui/toolbar/recent_tabs_sub_menu_model.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698