15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/command_line.h"
62a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/files/file_path.h"
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/path_service.h"
82a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/prefs/pref_service.h"
9868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "base/strings/utf_string_conversions.h"
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/extensions/crx_installer.h"
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/extensions/extension_browsertest.h"
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/extensions/extension_service.h"
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/profiles/profile.h"
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/ui/browser.h"
152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/browser/ui/tabs/tab_strip_model.h"
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/common/chrome_paths.h"
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/common/chrome_switches.h"
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/common/pref_names.h"
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/test/base/ui_test_utils.h"
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/browser/plugin_service.h"
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/browser/web_contents.h"
22ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch#include "content/public/common/webplugininfo.h"
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/test/browser_test_utils.h"
245d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "extensions/browser/extension_system.h"
252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "net/dns/mock_host_resolver.h"
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using content::PluginService;
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using content::WebContents;
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using extensions::Extension;
302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)using extensions::Manifest;
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace {
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const char* kExtensionId = "bjjcibdiodkkeanflmiijlcfieiemced";
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// This class tests that the Native Client plugin is blocked unless the
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// .nexe is part of an extension from the Chrome Webstore.
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class NaClExtensionTest : public ExtensionBrowserTest {
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public:
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  NaClExtensionTest() {}
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) protected:
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  enum InstallType {
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    INSTALL_TYPE_COMPONENT,
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    INSTALL_TYPE_UNPACKED,
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    INSTALL_TYPE_FROM_WEBSTORE,
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    INSTALL_TYPE_NON_WEBSTORE,
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  };
49c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  enum PluginType {
50c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    PLUGIN_TYPE_NONE = 0,
51c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    PLUGIN_TYPE_EMBED = 1,
52c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    PLUGIN_TYPE_CONTENT_HANDLER = 2,
53c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    PLUGIN_TYPE_ALL = PLUGIN_TYPE_EMBED |
54c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)                      PLUGIN_TYPE_CONTENT_HANDLER,
55c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  };
56c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  const Extension* InstallExtension(const base::FilePath& file_path,
592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                                    InstallType install_type) {
602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    ExtensionService* service = extensions::ExtensionSystem::Get(
612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        browser()->profile())->extension_service();
625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    const Extension* extension = NULL;
635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    switch (install_type) {
645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      case INSTALL_TYPE_COMPONENT:
655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        if (LoadExtensionAsComponent(file_path)) {
665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          extension = service->GetExtensionById(kExtensionId, false);
675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        }
685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        break;
695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      case INSTALL_TYPE_UNPACKED:
715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        // Install the extension from a folder so it's unpacked.
725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        if (LoadExtension(file_path)) {
735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          extension = service->GetExtensionById(kExtensionId, false);
745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        }
755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        break;
765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      case INSTALL_TYPE_FROM_WEBSTORE:
785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        // Install native_client.crx from the webstore.
795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        if (InstallExtensionFromWebstore(file_path, 1)) {
808bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)          extension = service->GetExtensionById(last_loaded_extension_id(),
815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                                false);
825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        }
835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        break;
845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      case INSTALL_TYPE_NON_WEBSTORE:
865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        // Install native_client.crx but not from the webstore.
875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        if (ExtensionBrowserTest::InstallExtension(file_path, 1)) {
888bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)          extension = service->GetExtensionById(last_loaded_extension_id(),
895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                                false);
905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        }
915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        break;
925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    return extension;
945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  const Extension* InstallExtension(InstallType install_type) {
972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    base::FilePath file_path = test_data_dir_.AppendASCII("native_client");
982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    return InstallExtension(file_path, install_type);
992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  }
1002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
1012a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  const Extension* InstallHostedApp() {
1022a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    base::FilePath file_path = test_data_dir_.AppendASCII(
1032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        "native_client_hosted_app");
1042a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    return InstallExtension(file_path, INSTALL_TYPE_FROM_WEBSTORE);
1052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  }
1062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  bool IsNaClPluginLoaded() {
1082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    base::FilePath path;
1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    if (PathService::Get(chrome::FILE_NACL_PLUGIN, &path)) {
110ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch      content::WebPluginInfo info;
1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      return PluginService::GetInstance()->GetPluginInfoByPath(path, &info);
1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    return false;
1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
116c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  void CheckPluginsCreated(const GURL& url, PluginType expected_to_succeed) {
1172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    ui_test_utils::NavigateToURL(browser(), url);
1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    // Don't run tests if the NaCl plugin isn't loaded.
1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    if (!IsNaClPluginLoaded())
1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      return;
1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    bool embedded_plugin_created = false;
1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    bool content_handler_plugin_created = false;
1242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    WebContents* web_contents =
1252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        browser()->tab_strip_model()->GetActiveWebContents();
1262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    ASSERT_TRUE(content::ExecuteScriptAndExtractBool(
1272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        web_contents,
1282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        "window.domAutomationController.send(EmbeddedPluginCreated());",
1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        &embedded_plugin_created));
1302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    ASSERT_TRUE(content::ExecuteScriptAndExtractBool(
1312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        web_contents,
1322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        "window.domAutomationController.send(ContentHandlerPluginCreated());",
1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        &content_handler_plugin_created));
1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
135c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    EXPECT_EQ(embedded_plugin_created,
136c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)              (expected_to_succeed & PLUGIN_TYPE_EMBED) != 0);
137c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    EXPECT_EQ(content_handler_plugin_created,
138c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)              (expected_to_succeed & PLUGIN_TYPE_CONTENT_HANDLER) != 0);
1395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
1402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
141c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  void CheckPluginsCreated(const Extension* extension,
142c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)                           PluginType expected_to_succeed) {
143c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    CheckPluginsCreated(extension->GetResourceURL("test.html"),
144c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)                        expected_to_succeed);
1452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  }
1462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
1475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
1485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Test that the NaCl plugin isn't blocked for Webstore extensions.
150f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// Disabled: http://crbug.com/319892
151f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)IN_PROC_BROWSER_TEST_F(NaClExtensionTest, DISABLED_WebStoreExtension) {
1525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ASSERT_TRUE(test_server()->Start());
1535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  const Extension* extension = InstallExtension(INSTALL_TYPE_FROM_WEBSTORE);
1555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ASSERT_TRUE(extension);
156c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  CheckPluginsCreated(extension, PLUGIN_TYPE_ALL);
1575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Test that the NaCl plugin is blocked for non-Webstore extensions.
160f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// Disabled: http://crbug.com/319892
161f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)IN_PROC_BROWSER_TEST_F(NaClExtensionTest, DISABLED_NonWebStoreExtension) {
1625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ASSERT_TRUE(test_server()->Start());
1635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  const Extension* extension = InstallExtension(INSTALL_TYPE_NON_WEBSTORE);
1655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ASSERT_TRUE(extension);
166c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  CheckPluginsCreated(extension, PLUGIN_TYPE_NONE);
1675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Test that the NaCl plugin isn't blocked for component extensions.
170f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// Disabled: http://crbug.com/319892
171f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)IN_PROC_BROWSER_TEST_F(NaClExtensionTest, DISABLED_ComponentExtension) {
1725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ASSERT_TRUE(test_server()->Start());
1735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  const Extension* extension = InstallExtension(INSTALL_TYPE_COMPONENT);
1755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ASSERT_TRUE(extension);
1762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  ASSERT_EQ(extension->location(), Manifest::COMPONENT);
177c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  CheckPluginsCreated(extension, PLUGIN_TYPE_ALL);
1785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Test that the NaCl plugin isn't blocked for unpacked extensions.
181f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// Disabled: http://crbug.com/319892
182f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)IN_PROC_BROWSER_TEST_F(NaClExtensionTest, DISABLED_UnpackedExtension) {
1835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ASSERT_TRUE(test_server()->Start());
1845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  const Extension* extension = InstallExtension(INSTALL_TYPE_UNPACKED);
1865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ASSERT_TRUE(extension);
1872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  ASSERT_EQ(extension->location(), Manifest::UNPACKED);
188c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  CheckPluginsCreated(extension, PLUGIN_TYPE_ALL);
1895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
191c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// Test that the NaCl plugin is blocked for non chrome-extension urls, except
192c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// if it's a content (MIME type) handler.
193f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// Disabled: http://crbug.com/319892
194f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)IN_PROC_BROWSER_TEST_F(NaClExtensionTest, DISABLED_NonExtensionScheme) {
1952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  ASSERT_TRUE(test_server()->Start());
1962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
1972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  const Extension* extension = InstallExtension(INSTALL_TYPE_FROM_WEBSTORE);
1982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  ASSERT_TRUE(extension);
1992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  CheckPluginsCreated(
200c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      test_server()->GetURL("files/extensions/native_client/test.html"),
201c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      PLUGIN_TYPE_CONTENT_HANDLER);
2022a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
2032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
2042a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Test that NaCl plugin isn't blocked for hosted app URLs.
2052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)IN_PROC_BROWSER_TEST_F(NaClExtensionTest, HostedApp) {
2062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  host_resolver()->AddRule("*", "127.0.0.1");
2072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  ASSERT_TRUE(test_server()->Start());
2082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
2092a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  GURL url = test_server()->GetURL("files/extensions/native_client/test.html");
2102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  GURL::Replacements replace_host;
2112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  std::string host_str("localhost");
2122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  replace_host.SetHostStr(host_str);
2132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  replace_host.ClearPort();
2142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  url = url.ReplaceComponents(replace_host);
2152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
2162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  const Extension* extension = InstallHostedApp();
2172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  ASSERT_TRUE(extension);
218c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  CheckPluginsCreated(url, PLUGIN_TYPE_ALL);
2192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
2202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
2215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace
222