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

Side by Side 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
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/sessions/persistent_tab_restore_service.h" 5 #include "chrome/browser/sessions/persistent_tab_restore_service.h"
6 6
7 #include "base/compiler_specific.h" 7 #include "base/compiler_specific.h"
8 #include "base/stringprintf.h" 8 #include "base/stringprintf.h"
9 #include "base/utf_string_conversions.h" 9 #include "base/utf_string_conversions.h"
10 #include "chrome/browser/profiles/profile.h" 10 #include "chrome/browser/profiles/profile.h"
11 #include "chrome/browser/sessions/session_service.h" 11 #include "chrome/browser/sessions/session_service.h"
12 #include "chrome/browser/sessions/session_service_factory.h" 12 #include "chrome/browser/sessions/session_service_factory.h"
13 #include "chrome/browser/sessions/session_types.h" 13 #include "chrome/browser/sessions/session_types.h"
14 #include "chrome/browser/sessions/tab_restore_service_factory.h" 14 #include "chrome/browser/sessions/tab_restore_service_factory.h"
15 #include "chrome/browser/sessions/tab_restore_service_observer.h"
15 #include "chrome/browser/ui/browser_window.h" 16 #include "chrome/browser/ui/browser_window.h"
16 #include "chrome/common/chrome_notification_types.h" 17 #include "chrome/common/chrome_notification_types.h"
17 #include "chrome/common/url_constants.h" 18 #include "chrome/common/url_constants.h"
18 #include "chrome/test/base/chrome_render_view_host_test_harness.h" 19 #include "chrome/test/base/chrome_render_view_host_test_harness.h"
19 #include "chrome/test/base/chrome_render_view_test.h" 20 #include "chrome/test/base/chrome_render_view_test.h"
20 #include "chrome/test/base/in_process_browser_test.h" 21 #include "chrome/test/base/in_process_browser_test.h"
21 #include "chrome/test/base/testing_profile.h" 22 #include "chrome/test/base/testing_profile.h"
22 #include "components/sessions/serialized_navigation_entry_test_helper.h" 23 #include "components/sessions/serialized_navigation_entry_test_helper.h"
23 #include "content/public/browser/browser_thread.h" 24 #include "content/public/browser/browser_thread.h"
24 #include "content/public/browser/navigation_controller.h" 25 #include "content/public/browser/navigation_controller.h"
(...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after
162 GURL url2_; 163 GURL url2_;
163 GURL url3_; 164 GURL url3_;
164 std::string user_agent_override_; 165 std::string user_agent_override_;
165 scoped_ptr<PersistentTabRestoreService> service_; 166 scoped_ptr<PersistentTabRestoreService> service_;
166 PersistentTabRestoreTimeFactory* time_factory_; 167 PersistentTabRestoreTimeFactory* time_factory_;
167 content::RenderViewTest::RendererWebKitPlatformSupportImplNoSandbox 168 content::RenderViewTest::RendererWebKitPlatformSupportImplNoSandbox
168 webkit_platform_support_; 169 webkit_platform_support_;
169 content::TestBrowserThread ui_thread_; 170 content::TestBrowserThread ui_thread_;
170 }; 171 };
171 172
173 namespace {
174
175 class TestTabRestoreServiceObserver : public TabRestoreServiceObserver {
176 public:
177 TestTabRestoreServiceObserver() : got_loaded_(false) {}
178
179 void clear_got_loaded() { got_loaded_ = false; }
180 bool got_loaded() const { return got_loaded_; }
181
182 // TabRestoreServiceObserver:
183 virtual void TabRestoreServiceChanged(TabRestoreService* service) OVERRIDE {
184 }
185 virtual void TabRestoreServiceDestroyed(TabRestoreService* service) OVERRIDE {
186 }
187 virtual void TabRestoreServiceLoaded(TabRestoreService* service) OVERRIDE {
188 got_loaded_ = true;
189 }
190
191 private:
192 // Was TabRestoreServiceLoaded() invoked?
193 bool got_loaded_;
194
195 DISALLOW_COPY_AND_ASSIGN(TestTabRestoreServiceObserver);
196 };
197
198 } // namespace
199
172 TEST_F(PersistentTabRestoreServiceTest, Basic) { 200 TEST_F(PersistentTabRestoreServiceTest, Basic) {
173 AddThreeNavigations(); 201 AddThreeNavigations();
174 202
175 // Have the service record the tab. 203 // Have the service record the tab.
176 service_->CreateHistoricalTab(web_contents(), -1); 204 service_->CreateHistoricalTab(web_contents(), -1);
177 205
178 // Make sure an entry was created. 206 // Make sure an entry was created.
179 ASSERT_EQ(1U, service_->entries().size()); 207 ASSERT_EQ(1U, service_->entries().size());
180 208
181 // Make sure the entry matches. 209 // Make sure the entry matches.
(...skipping 183 matching lines...) Expand 10 before | Expand all | Expand 10 after
365 ASSERT_EQ(1U, service_->entries().size()); 393 ASSERT_EQ(1U, service_->entries().size());
366 } 394 }
367 395
368 // Makes sure we load the previous session as necessary. 396 // Makes sure we load the previous session as necessary.
369 TEST_F(PersistentTabRestoreServiceTest, LoadPreviousSession) { 397 TEST_F(PersistentTabRestoreServiceTest, LoadPreviousSession) {
370 CreateSessionServiceWithOneWindow(false); 398 CreateSessionServiceWithOneWindow(false);
371 399
372 SessionServiceFactory::GetForProfile(profile())-> 400 SessionServiceFactory::GetForProfile(profile())->
373 MoveCurrentSessionToLastSession(); 401 MoveCurrentSessionToLastSession();
374 402
403 EXPECT_FALSE(service_->IsLoaded());
404
405 TestTabRestoreServiceObserver observer;
406 service_->AddObserver(&observer);
375 service_->LoadTabsFromLastSession(); 407 service_->LoadTabsFromLastSession();
408 EXPECT_TRUE(observer.got_loaded());
409 service_->RemoveObserver(&observer);
376 410
377 // Make sure we get back one entry with one tab whose url is url1. 411 // Make sure we get back one entry with one tab whose url is url1.
378 ASSERT_EQ(1U, service_->entries().size()); 412 ASSERT_EQ(1U, service_->entries().size());
379 TabRestoreService::Entry* entry2 = service_->entries().front(); 413 TabRestoreService::Entry* entry2 = service_->entries().front();
380 ASSERT_EQ(TabRestoreService::WINDOW, entry2->type); 414 ASSERT_EQ(TabRestoreService::WINDOW, entry2->type);
381 TabRestoreService::Window* window = 415 TabRestoreService::Window* window =
382 static_cast<TabRestoreService::Window*>(entry2); 416 static_cast<TabRestoreService::Window*>(entry2);
383 ASSERT_EQ(1U, window->tabs.size()); 417 ASSERT_EQ(1U, window->tabs.size());
384 EXPECT_EQ(0, window->timestamp.ToInternalValue()); 418 EXPECT_EQ(0, window->timestamp.ToInternalValue());
385 EXPECT_EQ(0, window->selected_tab_index); 419 EXPECT_EQ(0, window->selected_tab_index);
(...skipping 302 matching lines...) Expand 10 before | Expand all | Expand 10 after
688 NavigateAndCommit( 722 NavigateAndCommit(
689 GURL(base::StringPrintf("http://%d", static_cast<int>(i)))); 723 GURL(base::StringPrintf("http://%d", static_cast<int>(i))));
690 service_->CreateHistoricalTab(web_contents(), -1); 724 service_->CreateHistoricalTab(web_contents(), -1);
691 } 725 }
692 726
693 EXPECT_EQ(max_entries, service_->entries().size()); 727 EXPECT_EQ(max_entries, service_->entries().size());
694 // This should not crash. 728 // This should not crash.
695 service_->LoadTabsFromLastSession(); 729 service_->LoadTabsFromLastSession();
696 EXPECT_EQ(max_entries, service_->entries().size()); 730 EXPECT_EQ(max_entries, service_->entries().size());
697 } 731 }
732
733 // Makes sure invoking LoadTabsFromLastSession() when the max number of entries
734 // have been added results in IsLoaded() returning true and notifies observers.
735 TEST_F(PersistentTabRestoreServiceTest, GoToLoadedWhenHaveMaxEntries) {
736 const size_t max_entries = kMaxEntries;
737 for (size_t i = 0; i < max_entries + 5; i++) {
738 NavigateAndCommit(
739 GURL(base::StringPrintf("http://%d", static_cast<int>(i))));
740 service_->CreateHistoricalTab(web_contents(), -1);
741 }
742
743 EXPECT_FALSE(service_->IsLoaded());
744 TestTabRestoreServiceObserver observer;
745 service_->AddObserver(&observer);
746 EXPECT_EQ(max_entries, service_->entries().size());
747 service_->LoadTabsFromLastSession();
748 EXPECT_TRUE(observer.got_loaded());
749 EXPECT_TRUE(service_->IsLoaded());
750 service_->RemoveObserver(&observer);
751 }
OLDNEW
« 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