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

Unified Diff: chrome/browser/sessions/persistent_tab_restore_service_browsertest.cc

Issue 14620014: Fixes couple of bugs triggered on chromeos when restoring a tab: (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: resolve merge Created 7 years, 7 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/sessions/persistent_tab_restore_service_browsertest.cc
diff --git a/chrome/browser/sessions/persistent_tab_restore_service_browsertest.cc b/chrome/browser/sessions/persistent_tab_restore_service_browsertest.cc
index b90a8dde57aa313c2afde55e974bb576e1dfb8ad..399b35a863525562e2b5f7a61c872c573363d6fc 100644
--- a/chrome/browser/sessions/persistent_tab_restore_service_browsertest.cc
+++ b/chrome/browser/sessions/persistent_tab_restore_service_browsertest.cc
@@ -12,6 +12,7 @@
#include "chrome/browser/sessions/session_service_factory.h"
#include "chrome/browser/sessions/session_types.h"
#include "chrome/browser/sessions/tab_restore_service_factory.h"
+#include "chrome/browser/sessions/tab_restore_service_observer.h"
#include "chrome/browser/ui/browser_window.h"
#include "chrome/common/chrome_notification_types.h"
#include "chrome/common/url_constants.h"
@@ -169,6 +170,33 @@ class PersistentTabRestoreServiceTest : public ChromeRenderViewHostTestHarness {
content::TestBrowserThread ui_thread_;
};
+namespace {
+
+class TestTabRestoreServiceObserver : public TabRestoreServiceObserver {
+ public:
+ TestTabRestoreServiceObserver() : got_loaded_(false) {}
+
+ void clear_got_loaded() { got_loaded_ = false; }
+ bool got_loaded() const { return got_loaded_; }
+
+ // TabRestoreServiceObserver:
+ virtual void TabRestoreServiceChanged(TabRestoreService* service) OVERRIDE {
+ }
+ virtual void TabRestoreServiceDestroyed(TabRestoreService* service) OVERRIDE {
+ }
+ virtual void TabRestoreServiceLoaded(TabRestoreService* service) OVERRIDE {
+ got_loaded_ = true;
+ }
+
+ private:
+ // Was TabRestoreServiceLoaded() invoked?
+ bool got_loaded_;
+
+ DISALLOW_COPY_AND_ASSIGN(TestTabRestoreServiceObserver);
+};
+
+} // namespace
+
TEST_F(PersistentTabRestoreServiceTest, Basic) {
AddThreeNavigations();
@@ -372,7 +400,13 @@ TEST_F(PersistentTabRestoreServiceTest, LoadPreviousSession) {
SessionServiceFactory::GetForProfile(profile())->
MoveCurrentSessionToLastSession();
+ EXPECT_FALSE(service_->IsLoaded());
+
+ TestTabRestoreServiceObserver observer;
+ service_->AddObserver(&observer);
service_->LoadTabsFromLastSession();
+ EXPECT_TRUE(observer.got_loaded());
+ service_->RemoveObserver(&observer);
// Make sure we get back one entry with one tab whose url is url1.
ASSERT_EQ(1U, service_->entries().size());
@@ -695,3 +729,23 @@ TEST_F(PersistentTabRestoreServiceTest, PruneIsCalled) {
service_->LoadTabsFromLastSession();
EXPECT_EQ(max_entries, service_->entries().size());
}
+
+// Makes sure invoking LoadTabsFromLastSession() when the max number of entries
+// have been added results in IsLoaded() returning true and notifies observers.
+TEST_F(PersistentTabRestoreServiceTest, GoToLoadedWhenHaveMaxEntries) {
+ const size_t max_entries = kMaxEntries;
+ for (size_t i = 0; i < max_entries + 5; i++) {
+ NavigateAndCommit(
+ GURL(base::StringPrintf("http://%d", static_cast<int>(i))));
+ service_->CreateHistoricalTab(web_contents(), -1);
+ }
+
+ EXPECT_FALSE(service_->IsLoaded());
+ TestTabRestoreServiceObserver observer;
+ service_->AddObserver(&observer);
+ EXPECT_EQ(max_entries, service_->entries().size());
+ service_->LoadTabsFromLastSession();
+ EXPECT_TRUE(observer.got_loaded());
+ EXPECT_TRUE(service_->IsLoaded());
+ service_->RemoveObserver(&observer);
+}
« no previous file with comments | « chrome/browser/sessions/persistent_tab_restore_service.cc ('k') | chrome/browser/sessions/tab_restore_service_helper.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698