// Copyright 2014 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 "extensions/shell/test/shell_apitest.h" #include "base/files/file_path.h" #include "base/path_service.h" #include "content/public/browser/notification_service.h" #include "extensions/browser/extension_registry.h" #include "extensions/browser/notification_types.h" #include "extensions/common/extension_paths.h" #include "extensions/shell/browser/shell_extension_system.h" #include "extensions/test/result_catcher.h" namespace extensions { ShellApiTest::ShellApiTest() { } ShellApiTest::~ShellApiTest() { } const Extension* ShellApiTest::LoadApp(const std::string& app_dir) { base::FilePath test_data_dir; PathService::Get(extensions::DIR_TEST_DATA, &test_data_dir); test_data_dir = test_data_dir.AppendASCII(app_dir); const Extension* extension = extension_system_->LoadApp(test_data_dir); if (!extension) return NULL; extension_system_->LaunchApp(extension->id()); return extension; } bool ShellApiTest::RunAppTest(const std::string& app_dir) { ResultCatcher catcher; const Extension* extension = LoadApp(app_dir); if (!extension) return false; if (!catcher.GetNextResult()) { message_ = catcher.message(); return false; } return true; } void ShellApiTest::UnloadApp(const Extension* app) { ExtensionRegistry* registry = ExtensionRegistry::Get(browser_context()); ASSERT_TRUE(registry->RemoveEnabled(app->id())); UnloadedExtensionInfo::Reason reason(UnloadedExtensionInfo::REASON_DISABLE); registry->TriggerOnUnloaded(app, reason); // The following notifications are deprecated and in the future, classes // should only be observing the ExtensionRegistry. UnloadedExtensionInfo details(app, reason); content::NotificationService::current()->Notify( extensions::NOTIFICATION_EXTENSION_UNLOADED_DEPRECATED, content::Source(browser_context()), content::Details(&details)); content::NotificationService::current()->Notify( extensions::NOTIFICATION_EXTENSION_REMOVED, content::Source(browser_context()), content::Details(app)); } } // namespace extensions