Index: chrome/browser/sessions/persistent_tab_restore_service.cc |
diff --git a/chrome/browser/sessions/persistent_tab_restore_service.cc b/chrome/browser/sessions/persistent_tab_restore_service.cc |
index f616ade59fa088fa06f8d96ae6b08b07cff1a7ea..6d770e0c36d9e5830cabeb4a0292e8e52a9f2c75 100644 |
--- a/chrome/browser/sessions/persistent_tab_restore_service.cc |
+++ b/chrome/browser/sessions/persistent_tab_restore_service.cc |
@@ -17,9 +17,9 @@ |
#include "base/stl_util.h" |
#include "base/task/cancelable_task_tracker.h" |
#include "base/time/time.h" |
-#include "chrome/browser/sessions/base_session_service_delegate_impl.h" |
#include "components/sessions/base_session_service.h" |
#include "components/sessions/base_session_service_commands.h" |
+#include "components/sessions/base_session_service_delegate.h" |
#include "components/sessions/core/session_constants.h" |
#include "components/sessions/session_command.h" |
#include "content/public/browser/session_storage_namespace.h" |
@@ -112,16 +112,18 @@ const size_t kMaxEntries = TabRestoreServiceHelper::kMaxEntries; |
// PersistentTabRestoreService::Delegate --------------------------------------- |
// This restore service will create and own a BaseSessionService and implement |
-// the required BaseSessionServiceDelegateImpl. |
+// the required sessions::BaseSessionServiceDelegate. |
class PersistentTabRestoreService::Delegate |
- : public BaseSessionServiceDelegateImpl, |
+ : public sessions::BaseSessionServiceDelegate, |
public TabRestoreServiceHelper::Observer { |
public: |
explicit Delegate(sessions::TabRestoreServiceClient* client); |
~Delegate() override; |
- // BaseSessionServiceDelegateImpl: |
+ // sessions::BaseSessionServiceDelegate: |
+ base::SequencedWorkerPool* GetBlockingPool() override; |
+ bool ShouldUseDelayedSave() override; |
void OnWillSaveCommands() override; |
// TabRestoreServiceHelper::Observer: |
@@ -220,11 +222,11 @@ class PersistentTabRestoreService::Delegate |
std::vector<TabRestoreService::Entry*>* entries); |
private: |
- scoped_ptr<sessions::BaseSessionService> base_session_service_; |
- |
// The associated client. |
sessions::TabRestoreServiceClient* client_; |
+ scoped_ptr<sessions::BaseSessionService> base_session_service_; |
+ |
TabRestoreServiceHelper* tab_restore_service_helper_; |
// The number of entries to write. |
@@ -249,12 +251,11 @@ class PersistentTabRestoreService::Delegate |
PersistentTabRestoreService::Delegate::Delegate( |
sessions::TabRestoreServiceClient* client) |
- : BaseSessionServiceDelegateImpl(true), |
+ : client_(client), |
base_session_service_(new sessions::BaseSessionService( |
sessions::BaseSessionService::TAB_RESTORE, |
- client->GetPathToSaveTo(), |
+ client_->GetPathToSaveTo(), |
this)), |
- client_(client), |
tab_restore_service_helper_(NULL), |
entries_to_write_(0), |
entries_written_(0), |
@@ -262,6 +263,15 @@ PersistentTabRestoreService::Delegate::Delegate( |
PersistentTabRestoreService::Delegate::~Delegate() {} |
+base::SequencedWorkerPool* |
+PersistentTabRestoreService::Delegate::GetBlockingPool() { |
+ return client_->GetBlockingPool(); |
+} |
+ |
+bool PersistentTabRestoreService::Delegate::ShouldUseDelayedSave() { |
+ return true; |
+} |
+ |
void PersistentTabRestoreService::Delegate::OnWillSaveCommands() { |
const Entries& entries = tab_restore_service_helper_->entries(); |
int to_write_count = std::min(entries_to_write_, |
@@ -434,7 +444,7 @@ void PersistentTabRestoreService::Delegate::ScheduleCommandsForTab( |
i >= 0 && |
valid_count_before_selected < sessions::gMaxPersistNavigationCount; |
--i) { |
- if (ShouldTrackEntry(navigations[i].virtual_url())) { |
+ if (client_->ShouldTrackURLForRestore(navigations[i].virtual_url())) { |
first_index_to_persist = i; |
valid_count_before_selected++; |
} |
@@ -474,7 +484,7 @@ void PersistentTabRestoreService::Delegate::ScheduleCommandsForTab( |
for (int i = first_index_to_persist, wrote_count = 0; |
wrote_count < 2 * sessions::gMaxPersistNavigationCount && i < max_index; |
++i) { |
- if (ShouldTrackEntry(navigations[i].virtual_url())) { |
+ if (client_->ShouldTrackURLForRestore(navigations[i].virtual_url())) { |
base_session_service_->ScheduleCommand( |
CreateUpdateTabNavigationCommand(kCommandUpdateTabNavigation, |
tab.id, |
@@ -541,9 +551,10 @@ int PersistentTabRestoreService::Delegate::GetSelectedNavigationIndexToPersist( |
int max_index = static_cast<int>(navigations.size()); |
// Find the first navigation to persist. We won't persist the selected |
- // navigation if ShouldTrackEntry returns false. |
+ // navigation if client_->ShouldTrackURLForRestore returns false. |
while (selected_index >= 0 && |
- !ShouldTrackEntry(navigations[selected_index].virtual_url())) { |
+ !client_->ShouldTrackURLForRestore( |
+ navigations[selected_index].virtual_url())) { |
selected_index--; |
} |
@@ -553,7 +564,8 @@ int PersistentTabRestoreService::Delegate::GetSelectedNavigationIndexToPersist( |
// Couldn't find a navigation to persist going back, go forward. |
selected_index = tab.current_navigation_index + 1; |
while (selected_index < max_index && |
- !ShouldTrackEntry(navigations[selected_index].virtual_url())) { |
+ !client_->ShouldTrackURLForRestore( |
+ navigations[selected_index].virtual_url())) { |
selected_index++; |
} |