| 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 4a2b48fbd844c995a6b4bcd2ef4a45f13c0042da..f0354e72d6f7d0a05334a5bb1ec1a7096085224b 100644
 | 
| --- a/chrome/browser/extensions/platform_app_browsertest.cc
 | 
| +++ b/chrome/browser/extensions/platform_app_browsertest.cc
 | 
| @@ -15,6 +15,7 @@
 | 
|  #include "chrome/browser/ui/browser.h"
 | 
|  #include "chrome/browser/ui/browser_list.h"
 | 
|  #include "chrome/common/chrome_switches.h"
 | 
| +#include "chrome/common/chrome_view_type.h"
 | 
|  #include "chrome/common/extensions/extension_constants.h"
 | 
|  #include "chrome/test/base/ui_test_utils.h"
 | 
|  #include "content/public/browser/web_contents.h"
 | 
| @@ -49,10 +50,12 @@ class PlatformAppBrowserTest : public ExtensionApiTest {
 | 
|    virtual void SetUpCommandLine(CommandLine* command_line) {
 | 
|      ExtensionBrowserTest::SetUpCommandLine(command_line);
 | 
|      command_line->AppendSwitch(switches::kEnablePlatformApps);
 | 
| +    command_line->AppendSwitch(switches::kEnableExperimentalExtensionApis);
 | 
|    }
 | 
|  
 | 
|   protected:
 | 
|    void LoadAndLaunchPlatformApp(const char* name) {
 | 
| +    size_t platform_app_count = GetPlatformAppCount();
 | 
|      ui_test_utils::WindowedNotificationObserver app_loaded_observer(
 | 
|          content::NOTIFICATION_LOAD_COMPLETED_MAIN_FRAME,
 | 
|          content::NotificationService::AllSources());
 | 
| @@ -65,12 +68,10 @@ class PlatformAppBrowserTest : public ExtensionApiTest {
 | 
|          last_loaded_extension_id_, false);
 | 
|      EXPECT_TRUE(extension);
 | 
|  
 | 
| -    size_t platform_app_count = GetPlatformAppCount();
 | 
| -
 | 
|      Browser::OpenApplication(
 | 
|          browser()->profile(),
 | 
|          extension,
 | 
| -        extension_misc::LAUNCH_SHELL,
 | 
| +        extension_misc::LAUNCH_NONE,
 | 
|          GURL(),
 | 
|          NEW_WINDOW);
 | 
|  
 | 
| @@ -80,7 +81,7 @@ class PlatformAppBrowserTest : public ExtensionApiTest {
 | 
|      EXPECT_EQ(platform_app_count + 1, GetPlatformAppCount());
 | 
|    }
 | 
|  
 | 
| -  // Gets the number of platform apps that are running.
 | 
| +  // Gets the number of platform apps extension hosts that are running.
 | 
|    size_t GetPlatformAppCount() {
 | 
|      int count = 0;
 | 
|      ExtensionProcessManager* process_manager =
 | 
| @@ -97,16 +98,17 @@ class PlatformAppBrowserTest : public ExtensionApiTest {
 | 
|    }
 | 
|  
 | 
|    // 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() {
 | 
| +  // platform app shell window that is found (most tests only deal with one
 | 
| +  // platform app window, so this is good enough).
 | 
| +  WebContents* GetFirstPlatformAppShellWindowWebContents() {
 | 
|      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())
 | 
| +      if (host->extension() && host->extension()->is_platform_app() &&
 | 
| +          host->extension_host_type() == chrome::VIEW_TYPE_APP_SHELL)
 | 
|          return host->host_contents();
 | 
|      }
 | 
|  
 | 
| @@ -114,21 +116,20 @@ class PlatformAppBrowserTest : public ExtensionApiTest {
 | 
|    }
 | 
|  };
 | 
|  
 | 
| -IN_PROC_BROWSER_TEST_F(PlatformAppBrowserTest, OpenAppInShellContainer) {
 | 
| -  ASSERT_EQ(0u, GetPlatformAppCount());
 | 
| -  LoadAndLaunchPlatformApp("empty");
 | 
| -  ASSERT_EQ(1u, GetPlatformAppCount());
 | 
| -
 | 
| -  UnloadExtension(last_loaded_extension_id_);
 | 
| -  ASSERT_EQ(0u, GetPlatformAppCount());
 | 
| +// Tests that platform apps received the "launch" event when launched.
 | 
| +IN_PROC_BROWSER_TEST_F(PlatformAppBrowserTest, OnLaunchedEvent) {
 | 
| +  ASSERT_TRUE(RunPlatformAppTest("platform_apps/launch")) << message_;
 | 
|  }
 | 
|  
 | 
|  IN_PROC_BROWSER_TEST_F(PlatformAppBrowserTest, EmptyContextMenu) {
 | 
| -  LoadAndLaunchPlatformApp("empty");
 | 
| +  ExtensionTestMessageListener launched_listener("Launched", false);
 | 
| +  LoadAndLaunchPlatformApp("empty_context_menu");
 | 
| +
 | 
| +  ASSERT_TRUE(launched_listener.WaitUntilSatisfied());
 | 
|  
 | 
|    // The empty app doesn't add any context menu items, so its menu should
 | 
|    // only include the developer tools.
 | 
| -  WebContents* web_contents = GetFirstPlatformAppWebContents();
 | 
| +  WebContents* web_contents = GetFirstPlatformAppShellWindowWebContents();
 | 
|    ASSERT_TRUE(web_contents);
 | 
|    WebKit::WebContextMenuData data;
 | 
|    content::ContextMenuParams params(data);
 | 
| @@ -140,15 +141,16 @@ IN_PROC_BROWSER_TEST_F(PlatformAppBrowserTest, EmptyContextMenu) {
 | 
|  }
 | 
|  
 | 
|  IN_PROC_BROWSER_TEST_F(PlatformAppBrowserTest, AppWithContextMenu) {
 | 
| -  ExtensionTestMessageListener listener1("created item", false);
 | 
| +  ExtensionTestMessageListener launched_listener("Launched", false);
 | 
|    LoadAndLaunchPlatformApp("context_menu");
 | 
|  
 | 
| -  // Wait for the extension to tell us it's created an item.
 | 
| -  ASSERT_TRUE(listener1.WaitUntilSatisfied());
 | 
| +  // Wait for the extension to tell us it's initialized its context menus and
 | 
| +  // launched a window.
 | 
| +  ASSERT_TRUE(launched_listener.WaitUntilSatisfied());
 | 
|  
 | 
|    // The context_menu app has one context menu item. This, along with a
 | 
|    // separator and the developer tools, is all that should be in the menu.
 | 
| -  WebContents* web_contents = GetFirstPlatformAppWebContents();
 | 
| +  WebContents* web_contents = GetFirstPlatformAppShellWindowWebContents();
 | 
|    ASSERT_TRUE(web_contents);
 | 
|    WebKit::WebContextMenuData data;
 | 
|    content::ContextMenuParams params(data);
 | 
| @@ -159,21 +161,8 @@ IN_PROC_BROWSER_TEST_F(PlatformAppBrowserTest, AppWithContextMenu) {
 | 
|  }
 | 
|  
 | 
|  IN_PROC_BROWSER_TEST_F(PlatformAppBrowserTest, DisallowNavigation) {
 | 
| -  ASSERT_TRUE(test_server()->Start());
 | 
| -
 | 
| -  LoadAndLaunchPlatformApp("navigation");
 | 
| -  WebContents* web_contents = GetFirstPlatformAppWebContents();
 | 
| -
 | 
| -  GURL remote_url = test_server()->GetURL(
 | 
| -      "files/extensions/platform_apps/navigation/nav-target.html");
 | 
| -
 | 
| -  std::string script = StringPrintf(
 | 
| -      "runTests(\"%s\")", remote_url.spec().c_str());
 | 
| -  bool result = false;
 | 
| -  ASSERT_TRUE(ui_test_utils::ExecuteJavaScriptAndExtractBool(
 | 
| -      web_contents->GetRenderViewHost(), L"",
 | 
| -      UTF8ToWide(script), &result));
 | 
| -  EXPECT_TRUE(result);
 | 
| +  ASSERT_TRUE(StartTestServer());
 | 
| +  ASSERT_TRUE(RunPlatformAppTest("platform_apps/navigation")) << message_;
 | 
|  }
 | 
|  
 | 
|  // Tests that localStorage and WebSQL are disabled for platform apps.
 | 
| @@ -186,13 +175,6 @@ IN_PROC_BROWSER_TEST_F(PlatformAppBrowserTest, Restrictions) {
 | 
|  }
 | 
|  
 | 
|  // Tests that platform apps can use the chrome.windows.* API.
 | 
| -#if defined(USE_AURA)
 | 
| -// On Aura, this currently fails because the window width is returned as 256
 | 
| -// instead of 250. See http://crbug.com/119410.
 | 
| -#define MAYBE_WindowsApi FAILS_WindowsApi
 | 
| -#else
 | 
| -#define MAYBE_WindowsApi WindowsApi
 | 
| -#endif
 | 
| -IN_PROC_BROWSER_TEST_F(PlatformAppBrowserTest, MAYBE_WindowsApi) {
 | 
| +IN_PROC_BROWSER_TEST_F(PlatformAppBrowserTest, WindowsApi) {
 | 
|    ASSERT_TRUE(RunPlatformAppTest("platform_apps/windows_api")) << message_;
 | 
|  }
 | 
| 
 |