Index: chrome/browser/sessions/tab_restore_service_browsertest.cc |
diff --git a/chrome/browser/sessions/tab_restore_service_browsertest.cc b/chrome/browser/sessions/tab_restore_service_browsertest.cc |
index 4cb97d1eec74be5a4fe94f3ba8f30ed6796e764f..75192d2f797f89dcf8c9266affae50d964d84fae 100644 |
--- a/chrome/browser/sessions/tab_restore_service_browsertest.cc |
+++ b/chrome/browser/sessions/tab_restore_service_browsertest.cc |
@@ -8,18 +8,26 @@ |
#include "chrome/browser/sessions/session_service.h" |
#include "chrome/browser/sessions/session_types.h" |
#include "chrome/browser/sessions/tab_restore_service.h" |
+#include "chrome/browser/sessions/tab_restore_service_factory.h" |
+#include "chrome/browser/ui/browser_window.h" |
+#include "chrome/common/chrome_notification_types.h" |
#include "chrome/common/url_constants.h" |
#include "chrome/test/base/chrome_render_view_host_test_harness.h" |
#include "chrome/test/base/chrome_render_view_test.h" |
+#include "chrome/test/base/in_process_browser_test.h" |
#include "chrome/test/base/testing_profile.h" |
+#include "chrome/test/base/ui_test_utils.h" |
#include "content/browser/tab_contents/test_tab_contents.h" |
#include "content/public/browser/navigation_controller.h" |
#include "content/public/browser/navigation_entry.h" |
+#include "content/public/browser/notification_service.h" |
+#include "content/public/browser/notification_types.h" |
#include "content/test/render_view_test.h" |
#include "testing/gtest/include/gtest/gtest.h" |
#include "third_party/WebKit/Source/WebKit/chromium/public/WebKit.h" |
typedef TabRestoreService::Tab Tab; |
+typedef TabRestoreService::Window Window; |
using content::NavigationEntry; |
@@ -97,7 +105,8 @@ class TabRestoreServiceTest : public ChromeRenderViewHostTestHarness { |
SessionServiceFactory::GetForProfile(profile()); |
SessionID tab_id; |
SessionID window_id; |
- session_service->SetWindowType(window_id, Browser::TYPE_TABBED); |
+ session_service->SetWindowType( |
+ window_id, Browser::TYPE_TABBED, SessionService::TYPE_NORMAL); |
session_service->SetTabWindow(window_id, tab_id); |
session_service->SetTabIndexInWindow(window_id, tab_id, 0); |
session_service->SetSelectedTabInWindow(window_id, 0); |
@@ -249,6 +258,36 @@ TEST_F(TabRestoreServiceTest, RestorePinnedAndApp) { |
EXPECT_TRUE(extension_app_id == tab->extension_app_id); |
} |
+// We only restore apps on chromeos. |
+#if defined(OS_CHROMEOS) |
+ |
+typedef InProcessBrowserTest TabRestoreServiceBrowserTest; |
+ |
+IN_PROC_BROWSER_TEST_F(TabRestoreServiceBrowserTest, RestoreApp) { |
+ Profile* profile = browser()->profile(); |
+ TabRestoreService* trs = TabRestoreServiceFactory::GetForProfile(profile); |
+ const char* app_name = "TestApp"; |
+ |
+ Browser* app_browser = CreateBrowserForApp(app_name, profile); |
+ app_browser->window()->Close(); |
+ ui_test_utils::WindowedNotificationObserver observer( |
+ chrome::NOTIFICATION_BROWSER_CLOSED, |
+ content::Source<Browser>(app_browser)); |
+ observer.Wait(); |
+ |
+ // One entry should be created. |
+ ASSERT_EQ(1U, trs->entries().size()); |
+ const TabRestoreService::Entry* restored_entry = trs->entries().front(); |
+ |
+ // It should be a window with an app. |
+ ASSERT_EQ(TabRestoreService::WINDOW, restored_entry->type); |
+ const Window* restored_window = |
+ static_cast<const Window*>(restored_entry); |
+ EXPECT_EQ(app_name, restored_window->app_name); |
+ |
+} |
+#endif |
+ |
// Make sure we persist entries to disk that have post data. |
TEST_F(TabRestoreServiceTest, DontPersistPostData) { |
AddThreeNavigations(); |