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

Unified Diff: chrome/browser/extensions/extension_management_apitest.cc

Issue 10750010: Add an installType property to the management API (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Forgot to remove param from LoadExtensionWithOptions (sorry) Created 8 years, 5 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/extensions/extension_management_apitest.cc
diff --git a/chrome/browser/extensions/extension_management_apitest.cc b/chrome/browser/extensions/extension_management_apitest.cc
deleted file mode 100644
index 81a4347d44379b2ca251529bbd89476cb2850949..0000000000000000000000000000000000000000
--- a/chrome/browser/extensions/extension_management_apitest.cc
+++ /dev/null
@@ -1,241 +0,0 @@
-// 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 <map>
-
-#include "chrome/browser/extensions/extension_apitest.h"
-#include "chrome/browser/extensions/extension_service.h"
-#include "chrome/browser/extensions/extension_system.h"
-#include "chrome/browser/extensions/extension_test_message_listener.h"
-#include "chrome/browser/extensions/test_management_policy.h"
-#include "chrome/browser/profiles/profile.h"
-#include "chrome/browser/ui/browser.h"
-#include "chrome/browser/ui/browser_commands.h"
-#include "chrome/browser/ui/browser_finder.h"
-#include "chrome/browser/ui/browser_list.h"
-#include "chrome/common/chrome_notification_types.h"
-#include "chrome/common/chrome_switches.h"
-#include "content/public/test/test_utils.h"
-
-using extensions::Extension;
-
-namespace {
-
-// Find a browser other than |browser|.
-Browser* FindOtherBrowser(Browser* browser) {
- Browser* found = NULL;
- for (BrowserList::const_iterator it = BrowserList::begin();
- it != BrowserList::end(); ++it) {
- if (*it == browser)
- continue;
- found = *it;
- }
-
- return found;
-}
-
-} // namespace
-
-class ExtensionManagementApiTest : public ExtensionApiTest {
- public:
- virtual void SetUpCommandLine(CommandLine* command_line) {
- ExtensionApiTest::SetUpCommandLine(command_line);
- command_line->AppendSwitch(switches::kEnablePanels);
- }
-
- virtual void InstallExtensions() {
- FilePath basedir = test_data_dir_.AppendASCII("management");
-
- // Load 4 enabled items.
- InstallNamedExtension(basedir, "enabled_extension");
- InstallNamedExtension(basedir, "enabled_app");
- InstallNamedExtension(basedir, "description");
- InstallNamedExtension(basedir, "permissions");
-
- // Load 2 disabled items.
- InstallNamedExtension(basedir, "disabled_extension");
- DisableExtension(extension_ids_["disabled_extension"]);
- InstallNamedExtension(basedir, "disabled_app");
- DisableExtension(extension_ids_["disabled_app"]);
- }
-
- // Load an app, and wait for a message from app "management/launch_on_install"
- // indicating that the new app has been launched.
- void LoadAndWaitForLaunch(const std::string& app_path,
- std::string* out_app_id) {
- ExtensionTestMessageListener launched_app("launched app", false);
- ASSERT_TRUE(LoadExtension(test_data_dir_.AppendASCII(app_path)));
-
- if (out_app_id)
- *out_app_id = last_loaded_extension_id_;
-
- ASSERT_TRUE(launched_app.WaitUntilSatisfied());
- }
-
- protected:
- void InstallNamedExtension(FilePath basedir, std::string name) {
- const Extension* extension = LoadExtension(basedir.AppendASCII(name));
- ASSERT_TRUE(extension);
- extension_ids_[name] = extension->id();
- }
-
- // Maps installed extension names to their IDs..
- std::map<std::string, std::string> extension_ids_;
-};
-
-IN_PROC_BROWSER_TEST_F(ExtensionManagementApiTest, Basics) {
- InstallExtensions();
- ASSERT_TRUE(RunExtensionSubtest("management/test", "basics.html"));
-}
-
-IN_PROC_BROWSER_TEST_F(ExtensionManagementApiTest, Uninstall) {
- InstallExtensions();
- ASSERT_TRUE(RunExtensionSubtest("management/test", "uninstall.html"));
-}
-
-// Tests actions on extensions when no management policy is in place.
-IN_PROC_BROWSER_TEST_F(ExtensionManagementApiTest, ManagementPolicyAllowed) {
- InstallExtensions();
- ExtensionService* service = browser()->profile()->GetExtensionService();
- EXPECT_TRUE(service->GetExtensionById(extension_ids_["enabled_extension"],
- false));
-
- // Ensure that all actions are allowed.
- extensions::ExtensionSystem::Get(
- browser()->profile())->management_policy()->UnregisterAllProviders();
-
- ASSERT_TRUE(RunExtensionSubtest("management/management_policy",
- "allowed.html"));
- // The last thing the test does is uninstall the "enabled_extension".
- EXPECT_FALSE(service->GetExtensionById(extension_ids_["enabled_extension"],
- true));
-}
-
-// Tests actions on extensions when management policy prohibits those actions.
-IN_PROC_BROWSER_TEST_F(ExtensionManagementApiTest, ManagementPolicyProhibited) {
- InstallExtensions();
- ExtensionService* service = browser()->profile()->GetExtensionService();
- EXPECT_TRUE(service->GetExtensionById(extension_ids_["enabled_extension"],
- false));
-
- // Prohibit status changes.
- extensions::ManagementPolicy* policy = extensions::ExtensionSystem::Get(
- browser()->profile())->management_policy();
- policy->UnregisterAllProviders();
- extensions::TestManagementPolicyProvider provider(
- extensions::TestManagementPolicyProvider::PROHIBIT_MODIFY_STATUS);
- policy->RegisterProvider(&provider);
- ASSERT_TRUE(RunExtensionSubtest("management/management_policy",
- "prohibited.html"));
-}
-
-IN_PROC_BROWSER_TEST_F(ExtensionManagementApiTest, LaunchPanelApp) {
- ExtensionService* service = browser()->profile()->GetExtensionService();
-
- // Load an extension that calls launchApp() on any app that gets
- // installed.
- ExtensionTestMessageListener launcher_loaded("launcher loaded", false);
- ASSERT_TRUE(LoadExtension(
- test_data_dir_.AppendASCII("management/launch_on_install")));
- ASSERT_TRUE(launcher_loaded.WaitUntilSatisfied());
-
- // Load an app with app.launch.container = "panel".
- std::string app_id;
- LoadAndWaitForLaunch("management/launch_app_panel", &app_id);
- ASSERT_FALSE(HasFatalFailure()); // Stop the test if any ASSERT failed.
-
- // Find the app's browser. Check that it is a panel.
- ASSERT_EQ(2u, browser::GetBrowserCount(browser()->profile()));
- Browser* app_browser = FindOtherBrowser(browser());
- ASSERT_TRUE(app_browser->is_type_panel());
- ASSERT_TRUE(app_browser->is_app());
-
- // Close the app panel.
- content::WindowedNotificationObserver signal(
- chrome::NOTIFICATION_BROWSER_CLOSED,
- content::Source<Browser>(app_browser));
-
- chrome::CloseWindow(app_browser);
- signal.Wait();
-
- // Unload the extension.
- UninstallExtension(app_id);
- ASSERT_EQ(1u, browser::GetBrowserCount(browser()->profile()));
- ASSERT_FALSE(service->GetExtensionById(app_id, true));
-
- // Set a pref indicating that the user wants to launch in a regular tab.
- // This should be ignored, because panel apps always load in a panel.
- service->extension_prefs()->SetLaunchType(
- app_id, extensions::ExtensionPrefs::LAUNCH_REGULAR);
-
- // Load the extension again.
- std::string app_id_new;
- LoadAndWaitForLaunch("management/launch_app_panel", &app_id_new);
- ASSERT_FALSE(HasFatalFailure());
-
- // If the ID changed, then the pref will not apply to the app.
- ASSERT_EQ(app_id, app_id_new);
-
- // Find the app's browser. Apps that should load in a panel ignore
- // prefs, so we should still see the launch in a panel.
- ASSERT_EQ(2u, browser::GetBrowserCount(browser()->profile()));
- app_browser = FindOtherBrowser(browser());
- ASSERT_TRUE(app_browser->is_type_panel());
- ASSERT_TRUE(app_browser->is_app());
-}
-
-IN_PROC_BROWSER_TEST_F(ExtensionManagementApiTest, LaunchTabApp) {
- ExtensionService* service = browser()->profile()->GetExtensionService();
-
- // Load an extension that calls launchApp() on any app that gets
- // installed.
- ExtensionTestMessageListener launcher_loaded("launcher loaded", false);
- ASSERT_TRUE(LoadExtension(
- test_data_dir_.AppendASCII("management/launch_on_install")));
- ASSERT_TRUE(launcher_loaded.WaitUntilSatisfied());
-
- // Code below assumes that the test starts with a single browser window
- // hosting one tab.
- ASSERT_EQ(1u, browser::GetBrowserCount(browser()->profile()));
- ASSERT_EQ(1, browser()->tab_count());
-
- // Load an app with app.launch.container = "tab".
- std::string app_id;
- LoadAndWaitForLaunch("management/launch_app_tab", &app_id);
- ASSERT_FALSE(HasFatalFailure());
-
- // Check that the app opened in a new tab of the existing browser.
- ASSERT_EQ(1u, browser::GetBrowserCount(browser()->profile()));
- ASSERT_EQ(2, browser()->tab_count());
-
- // Unload the extension.
- UninstallExtension(app_id);
- ASSERT_EQ(1u, browser::GetBrowserCount(browser()->profile()));
- ASSERT_FALSE(service->GetExtensionById(app_id, true));
-
- // Set a pref indicating that the user wants to launch in a window.
- service->extension_prefs()->SetLaunchType(
- app_id, extensions::ExtensionPrefs::LAUNCH_WINDOW);
-
- std::string app_id_new;
- LoadAndWaitForLaunch("management/launch_app_tab", &app_id_new);
- ASSERT_FALSE(HasFatalFailure());
-
- // If the ID changed, then the pref will not apply to the app.
- ASSERT_EQ(app_id, app_id_new);
-
-#if defined(OS_MACOSX)
- // App windows are not yet implemented on mac os. We should fall back
- // to a normal tab.
- ASSERT_EQ(1u, browser::GetBrowserCount(browser()->profile()));
- ASSERT_EQ(2, browser()->tab_count());
-#else
- // Find the app's browser. Opening in a new window will create
- // a new browser.
- ASSERT_EQ(2u, browser::GetBrowserCount(browser()->profile()));
- Browser* app_browser = FindOtherBrowser(browser());
- ASSERT_TRUE(app_browser->is_app());
- ASSERT_FALSE(app_browser->is_type_panel());
-#endif
-}

Powered by Google App Engine
This is Rietveld 408576698