Index: chrome/browser/extensions/platform_app_browsertest.cc |
diff --git a/chrome/browser/extensions/platform_app_browsertest.cc b/chrome/browser/extensions/platform_app_browsertest.cc |
index 49f3721445da9f8f2269f0a0990dd8e705df6896..fe5be7f31fc0a7fe3977121e7799a799a64718fb 100644 |
--- a/chrome/browser/extensions/platform_app_browsertest.cc |
+++ b/chrome/browser/extensions/platform_app_browsertest.cc |
@@ -1,9 +1,10 @@ |
-// Copyright (c) 2011 The Chromium Authors. All rights reserved. |
+// Copyright (c) 2012 The Chromium Authors. All rights reserved. |
// Use of this source code is governed by a BSD-style license that can be |
// found in the LICENSE file. |
#include "base/command_line.h" |
#include "chrome/browser/extensions/extension_browsertest.h" |
+#include "chrome/browser/extensions/extension_host.h" |
#include "chrome/browser/extensions/extension_service.h" |
#include "chrome/browser/extensions/extension_test_message_listener.h" |
#include "chrome/browser/profiles/profile.h" |
@@ -47,6 +48,7 @@ class PlatformAppBrowserTest : public ExtensionBrowserTest { |
command_line->AppendSwitch(switches::kEnablePlatformApps); |
} |
+ protected: |
void LoadAndLaunchPlatformApp(const char* name) { |
web_app::SetDisableShortcutCreationForTests(true); |
EXPECT_TRUE(LoadExtension(test_data_dir_.AppendASCII("platform_apps"). |
@@ -57,7 +59,7 @@ class PlatformAppBrowserTest : public ExtensionBrowserTest { |
last_loaded_extension_id_, false); |
EXPECT_TRUE(extension); |
- size_t browser_count = BrowserList::size(); |
+ size_t platform_app_count = GetPlatformAppCount(); |
Browser::OpenApplication( |
browser()->profile(), |
@@ -66,51 +68,69 @@ class PlatformAppBrowserTest : public ExtensionBrowserTest { |
GURL(), |
NEW_WINDOW); |
- // Now we have a new browser instance. |
- EXPECT_EQ(browser_count + 1, BrowserList::size()); |
+ // Now we have a new platform app running. |
+ EXPECT_EQ(platform_app_count + 1, GetPlatformAppCount()); |
} |
-}; |
- |
-IN_PROC_BROWSER_TEST_F(PlatformAppBrowserTest, OpenAppInShellContainer) { |
- // Start with one browser, new platform app will create another. |
- ASSERT_EQ(1u, BrowserList::size()); |
- |
- LoadAndLaunchPlatformApp("empty"); |
- // The launch should have created a new browser, so there should be 2 now. |
- ASSERT_EQ(2u, BrowserList::size()); |
- |
- // The new browser is the last one. |
- BrowserList::const_reverse_iterator reverse_iterator(BrowserList::end()); |
- Browser* new_browser = *(reverse_iterator++); |
+ // Gets the number of platform apps that are running. |
+ size_t GetPlatformAppCount() { |
+ int count = 0; |
+ ExtensionProcessManager* process_manager = |
+ browser()->profile()->GetExtensionProcessManager(); |
+ ExtensionProcessManager::const_iterator iter; |
+ for (iter = process_manager->begin(); iter != process_manager->end(); |
+ ++iter) { |
+ ExtensionHost* host = *iter; |
+ if (host->extension() && host->extension()->is_platform_app()) |
+ count++; |
+ } |
+ |
+ return count; |
+ } |
- ASSERT_TRUE(new_browser); |
- ASSERT_TRUE(new_browser != browser()); |
+ // Gets the WebContents associated with the ExtensionHost of the first |
+ // platform app that is found (most tests only deal with one platform |
+ // app, so this is good enough). |
+ WebContents* GetFirstPlatformAppWebContents() { |
+ ExtensionProcessManager* process_manager = |
+ browser()->profile()->GetExtensionProcessManager(); |
+ ExtensionProcessManager::const_iterator iter; |
+ for (iter = process_manager->begin(); iter != process_manager->end(); |
+ ++iter) { |
+ ExtensionHost* host = *iter; |
+ if (host->extension() && host->extension()->is_platform_app()) |
+ return host->host_contents(); |
+ } |
+ |
+ return NULL; |
+ } |
+}; |
- // Expect an app in a shell window. |
- EXPECT_TRUE(new_browser->is_app()); |
- EXPECT_TRUE(new_browser->is_type_shell()); |
+// Disabled until shell windows are implemented for non-GTK toolkits. |
+#if defined(TOOLKIT_GTK) |
+#define MAYBE_OpenAppInShellContainer OpenAppInShellContainer |
+#else |
+#define MAYBE_OpenAppInShellContainer DISABLED_OpenAppInShellContainer |
+#endif |
+IN_PROC_BROWSER_TEST_F(PlatformAppBrowserTest, MAYBE_OpenAppInShellContainer) { |
+ ASSERT_EQ(0u, GetPlatformAppCount()); |
+ LoadAndLaunchPlatformApp("empty"); |
+ ASSERT_EQ(1u, GetPlatformAppCount()); |
} |
-IN_PROC_BROWSER_TEST_F(PlatformAppBrowserTest, EmptyContextMenu) { |
- // Start with one browser, new platform app will create another. |
- ASSERT_EQ(1u, BrowserList::size()); |
- |
+// Disabled until shell windows are implemented for non-GTK toolkits. |
+#if defined(TOOLKIT_GTK) |
+#define MAYBE_EmptyContextMenu EmptyContextMenu |
+#else |
+#define MAYBE_EmptyContextMenu DISABLED_EmptyContextMenu |
+#endif |
+IN_PROC_BROWSER_TEST_F(PlatformAppBrowserTest, MAYBE_EmptyContextMenu) { |
LoadAndLaunchPlatformApp("empty"); |
- // The launch should have created a new browser, so there should be 2 now. |
- ASSERT_EQ(2u, BrowserList::size()); |
- |
- // The new browser is the last one. |
- BrowserList::const_reverse_iterator reverse_iterator(BrowserList::end()); |
- Browser* new_browser = *(reverse_iterator++); |
- |
- ASSERT_TRUE(new_browser); |
- ASSERT_TRUE(new_browser != browser()); |
- |
// The empty app doesn't add any context menu items, so its menu should |
// be empty. |
- WebContents* web_contents = new_browser->GetSelectedWebContents(); |
+ WebContents* web_contents = GetFirstPlatformAppWebContents(); |
+ ASSERT_TRUE(web_contents); |
WebKit::WebContextMenuData data; |
ContextMenuParams params(data); |
PlatformAppContextMenu* menu = new PlatformAppContextMenu(web_contents, |
@@ -119,29 +139,23 @@ IN_PROC_BROWSER_TEST_F(PlatformAppBrowserTest, EmptyContextMenu) { |
ASSERT_FALSE(menu->menu_model().GetItemCount()); |
} |
-IN_PROC_BROWSER_TEST_F(PlatformAppBrowserTest, AppWithContextMenu) { |
- // Start with one browser, new platform app will create another. |
- ASSERT_EQ(1u, BrowserList::size()); |
- |
+// Disabled until shell windows are implemented for non-GTK toolkits. |
+#if defined(TOOLKIT_GTK) |
+#define MAYBE_AppWithContextMenu AppWithContextMenu |
+#else |
+#define MAYBE_AppWithContextMenu DISABLED_AppWithContextMenu |
+#endif |
+IN_PROC_BROWSER_TEST_F(PlatformAppBrowserTest, MAYBE_AppWithContextMenu) { |
ExtensionTestMessageListener listener1("created item", false); |
LoadAndLaunchPlatformApp("context_menu"); |
// Wait for the extension to tell us it's created an item. |
ASSERT_TRUE(listener1.WaitUntilSatisfied()); |
- // The launch should have created a new browser, so there should be 2 now. |
- ASSERT_EQ(2u, BrowserList::size()); |
- |
- // The new browser is the last one. |
- BrowserList::const_reverse_iterator reverse_iterator(BrowserList::end()); |
- Browser* new_browser = *(reverse_iterator++); |
- |
- ASSERT_TRUE(new_browser); |
- ASSERT_TRUE(new_browser != browser()); |
- |
// The context_menu app has one context menu item. This is all that should |
// be in the menu, there should be no seperator. |
- WebContents* web_contents = new_browser->GetSelectedWebContents(); |
+ WebContents* web_contents = GetFirstPlatformAppWebContents(); |
+ ASSERT_TRUE(web_contents); |
WebKit::WebContextMenuData data; |
ContextMenuParams params(data); |
PlatformAppContextMenu* menu = new PlatformAppContextMenu(web_contents, |