0

[Extensions] Move manifest handlers to extensions/ (part 2)

Move some manifest handlers, associated metadata, and tests from
chrome/ to extensions/.

Bug: 324534603
Change-Id: Ic054221ccd84965066e93a91a0adaffc49ba2edb
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5331700
Reviewed-by: Justin Lulejian <jlulejian@chromium.org>
Commit-Queue: Devlin Cronin <rdevlin.cronin@chromium.org>
Reviewed-by: Devlin Cronin <rdevlin.cronin@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1269919}
This commit is contained in:
Anton Bershanskyi
2024-03-08 00:16:59 +00:00
committed by Chromium LUCI CQ
parent 50cb444eea
commit 71ecbb928d
27 changed files with 91 additions and 94 deletions

@@ -11,8 +11,8 @@
#include "base/memory/raw_ptr.h" #include "base/memory/raw_ptr.h"
#include "chrome/browser/ash/input_method/input_method_engine.h" #include "chrome/browser/ash/input_method/input_method_engine.h"
#include "chrome/common/extensions/api/input_ime/input_components_handler.h"
#include "extensions/browser/extension_function.h" #include "extensions/browser/extension_function.h"
#include "extensions/common/manifest_handlers/input_components_handler.h"
namespace extensions { namespace extensions {

@@ -376,10 +376,6 @@ static_library("common_lib") {
} }
if (is_chromeos_ash) { if (is_chromeos_ash) {
assert(enable_extensions) assert(enable_extensions)
sources += [
"extensions/api/input_ime/input_components_handler.cc",
"extensions/api/input_ime/input_components_handler.h",
]
public_deps += [ "//ash/keyboard/ui" ] public_deps += [ "//ash/keyboard/ui" ]
deps += [ "//ash/constants" ] deps += [ "//ash/constants" ]
} else if (is_chromeos_lacros) { } else if (is_chromeos_lacros) {

@@ -63,20 +63,6 @@
"extension", "legacy_packaged_app", "hosted_app" "extension", "legacy_packaged_app", "hosted_app"
] ]
}, },
"event_rules": {
"channel": "stable",
// "event_rules" does not grant any capabilities, it's just
// an optimisation for any API which uses events, so it's safe
// to expose to all extension types.
"extension_types": [
"extension",
"legacy_packaged_app",
"platform_app",
"hosted_app",
"shared_module",
"theme"
]
},
"devtools_page": { "devtools_page": {
"channel": "stable", "channel": "stable",
"extension_types": ["extension", "legacy_packaged_app"] "extension_types": ["extension", "legacy_packaged_app"]
@@ -133,14 +119,6 @@
"58B0C2968C335964D5433E89CA4D86628A0E3D4B" // http://crbug.com/673004 "58B0C2968C335964D5433E89CA4D86628A0E3D4B" // http://crbug.com/673004
] ]
}], }],
"homepage_url": {
"channel": "stable",
"extension_types": ["extension", "legacy_packaged_app"]
},
"input_components": {
"channel": "stable",
"extension_types": ["extension", "legacy_packaged_app"]
},
"minimum_chrome_version": { "minimum_chrome_version": {
"channel": "stable", "channel": "stable",
"extension_types": [ "extension_types": [
@@ -165,23 +143,10 @@
"chromeos_system_extension" "chromeos_system_extension"
] ]
}, },
"options_page": {
"channel": "stable",
"extension_types": [
"extension",
"legacy_packaged_app",
"hosted_app",
"chromeos_system_extension"
]
},
"platforms": { "platforms": {
"channel": "stable", "channel": "stable",
"extension_types": "all" "extension_types": "all"
}, },
"short_name": {
"channel": "stable",
"extension_types": "all"
},
"side_panel": { "side_panel": {
"channel": "stable", "channel": "stable",
"extension_types": ["extension"], "extension_types": ["extension"],
@@ -218,10 +183,6 @@
"channel": "stable", "channel": "stable",
"extension_types": ["extension", "legacy_packaged_app"] "extension_types": ["extension", "legacy_packaged_app"]
}, },
"update_url": {
"channel": "stable",
"extension_types": "all"
},
"url_handlers": { "url_handlers": {
"channel": "stable", "channel": "stable",
"extension_types": ["platform_app"] "extension_types": ["platform_app"]

@@ -20,17 +20,12 @@
#include "chrome/common/extensions/manifest_handlers/natively_connectable_handler.h" #include "chrome/common/extensions/manifest_handlers/natively_connectable_handler.h"
#include "chrome/common/extensions/manifest_handlers/settings_overrides_handler.h" #include "chrome/common/extensions/manifest_handlers/settings_overrides_handler.h"
#include "chrome/common/extensions/manifest_handlers/theme_handler.h" #include "chrome/common/extensions/manifest_handlers/theme_handler.h"
#include "extensions/common/manifest_handlers/options_page_info.h"
#if BUILDFLAG(IS_CHROMEOS) #if BUILDFLAG(IS_CHROMEOS)
#include "chrome/common/extensions/api/file_browser_handlers/file_browser_handler.h" #include "chrome/common/extensions/api/file_browser_handlers/file_browser_handler.h"
#include "chrome/common/extensions/api/file_system_provider_capabilities/file_system_provider_capabilities_handler.h" #include "chrome/common/extensions/api/file_system_provider_capabilities/file_system_provider_capabilities_handler.h"
#endif #endif
#if BUILDFLAG(IS_CHROMEOS_ASH)
#include "chrome/common/extensions/api/input_ime/input_components_handler.h"
#endif
namespace extensions { namespace extensions {
void RegisterChromeManifestHandlers() { void RegisterChromeManifestHandlers() {
@@ -42,7 +37,6 @@ void RegisterChromeManifestHandlers() {
registry->RegisterHandler(std::make_unique<MinimumChromeVersionChecker>()); registry->RegisterHandler(std::make_unique<MinimumChromeVersionChecker>());
registry->RegisterHandler(std::make_unique<NativelyConnectableHandler>()); registry->RegisterHandler(std::make_unique<NativelyConnectableHandler>());
registry->RegisterHandler(std::make_unique<OmniboxHandler>()); registry->RegisterHandler(std::make_unique<OmniboxHandler>());
registry->RegisterHandler(std::make_unique<OptionsPageManifestHandler>());
registry->RegisterHandler(std::make_unique<SettingsOverridesHandler>()); registry->RegisterHandler(std::make_unique<SettingsOverridesHandler>());
registry->RegisterHandler(std::make_unique<SidePanelManifestHandler>()); registry->RegisterHandler(std::make_unique<SidePanelManifestHandler>());
registry->RegisterHandler(std::make_unique<StorageSchemaManifestHandler>()); registry->RegisterHandler(std::make_unique<StorageSchemaManifestHandler>());
@@ -57,10 +51,6 @@ void RegisterChromeManifestHandlers() {
registry->RegisterHandler( registry->RegisterHandler(
std::make_unique<FileSystemProviderCapabilitiesHandler>()); std::make_unique<FileSystemProviderCapabilitiesHandler>());
#endif #endif
#if BUILDFLAG(IS_CHROMEOS_ASH)
registry->RegisterHandler(std::make_unique<InputComponentsHandler>());
#endif
} }
} // namespace extensions } // namespace extensions

@@ -9152,7 +9152,6 @@ test("unit_tests") {
"../common/extensions/manifest_tests/extension_manifests_default_extent_path_unittest.cc", "../common/extensions/manifest_tests/extension_manifests_default_extent_path_unittest.cc",
"../common/extensions/manifest_tests/extension_manifests_devtools_unittest.cc", "../common/extensions/manifest_tests/extension_manifests_devtools_unittest.cc",
"../common/extensions/manifest_tests/extension_manifests_experimental_unittest.cc", "../common/extensions/manifest_tests/extension_manifests_experimental_unittest.cc",
"../common/extensions/manifest_tests/extension_manifests_homepage_unittest.cc",
"../common/extensions/manifest_tests/extension_manifests_icons_unittest.cc", "../common/extensions/manifest_tests/extension_manifests_icons_unittest.cc",
"../common/extensions/manifest_tests/extension_manifests_initvalue_unittest.cc", "../common/extensions/manifest_tests/extension_manifests_initvalue_unittest.cc",
"../common/extensions/manifest_tests/extension_manifests_kiosk_unittest.cc", "../common/extensions/manifest_tests/extension_manifests_kiosk_unittest.cc",
@@ -9168,7 +9167,6 @@ test("unit_tests") {
"../common/extensions/manifest_tests/extension_manifests_sample_unittest.cc", "../common/extensions/manifest_tests/extension_manifests_sample_unittest.cc",
"../common/extensions/manifest_tests/extension_manifests_side_panel_unittest.cc", "../common/extensions/manifest_tests/extension_manifests_side_panel_unittest.cc",
"../common/extensions/manifest_tests/extension_manifests_ui_unittest.cc", "../common/extensions/manifest_tests/extension_manifests_ui_unittest.cc",
"../common/extensions/manifest_tests/extension_manifests_update_unittest.cc",
"../common/extensions/manifest_tests/extension_manifests_validapp_unittest.cc", "../common/extensions/manifest_tests/extension_manifests_validapp_unittest.cc",
"../common/extensions/manifest_tests/extension_manifests_web_accessible_resources_unittest.cc", "../common/extensions/manifest_tests/extension_manifests_web_accessible_resources_unittest.cc",
"../common/extensions/manifest_tests/extension_manifests_web_unittest.cc", "../common/extensions/manifest_tests/extension_manifests_web_unittest.cc",

@@ -531,6 +531,12 @@ static_library("common") {
"manifest_handlers/action_handlers_handler.h", "manifest_handlers/action_handlers_handler.h",
] ]
} }
if (is_chromeos_ash) {
sources += [
"manifest_handlers/input_components_handler.cc",
"manifest_handlers/input_components_handler.h",
]
}
} }
# NOTE: This is separate from ":common" because it depends on # NOTE: This is separate from ":common" because it depends on
@@ -612,6 +618,7 @@ source_set("unit_tests") {
"manifest_handlers/extension_action_handler_unittest.cc", "manifest_handlers/extension_action_handler_unittest.cc",
"manifest_handlers/extension_action_page_action_unittest.cc", "manifest_handlers/extension_action_page_action_unittest.cc",
"manifest_handlers/externally_connectable_unittest.cc", "manifest_handlers/externally_connectable_unittest.cc",
"manifest_handlers/homepage_url_unittest.cc",
"manifest_handlers/icons_handler_unittest.cc", "manifest_handlers/icons_handler_unittest.cc",
"manifest_handlers/incognito_manifest_unittest.cc", "manifest_handlers/incognito_manifest_unittest.cc",
"manifest_handlers/kiosk_mode_info_unittest.cc", "manifest_handlers/kiosk_mode_info_unittest.cc",
@@ -623,6 +630,7 @@ source_set("unit_tests") {
"manifest_handlers/requirements_unittest.cc", "manifest_handlers/requirements_unittest.cc",
"manifest_handlers/shared_module_manifest_unittest.cc", "manifest_handlers/shared_module_manifest_unittest.cc",
"manifest_handlers/trial_tokens_unittest.cc", "manifest_handlers/trial_tokens_unittest.cc",
"manifest_handlers/update_url_unittest.cc",
"manifest_unittest.cc", "manifest_unittest.cc",
"message_bundle_unittest.cc", "message_bundle_unittest.cc",
"mojom/message_port_mojom_traits_unittest.cc", "mojom/message_port_mojom_traits_unittest.cc",

@@ -173,6 +173,20 @@
"channel": "stable", "channel": "stable",
"extension_types": "all" "extension_types": "all"
}, },
"event_rules": {
"channel": "stable",
// "event_rules" does not grant any capabilities, it's just
// an optimisation for any API which uses events, so it's safe
// to expose to all extension types.
"extension_types": [
"extension",
"legacy_packaged_app",
"platform_app",
"hosted_app",
"shared_module",
"theme"
]
},
"export": { "export": {
"channel": "stable", "channel": "stable",
"extension_types": ["shared_module"] "extension_types": ["shared_module"]
@@ -216,6 +230,10 @@
"platforms": ["chromeos", "lacros"] "platforms": ["chromeos", "lacros"]
} }
], ],
"homepage_url": {
"channel": "stable",
"extension_types": ["extension", "legacy_packaged_app"]
},
"host_permissions": [{ "host_permissions": [{
"channel": "stable", "channel": "stable",
"extension_types": ["extension"], "extension_types": ["extension"],
@@ -231,6 +249,10 @@
"channel": "stable", "channel": "stable",
"extension_types": "all" "extension_types": "all"
}, },
"input_components": {
"channel": "stable",
"extension_types": ["extension", "legacy_packaged_app"]
},
"import": { "import": {
"channel": "stable", "channel": "stable",
"extension_types": "all" "extension_types": "all"
@@ -371,6 +393,15 @@
"extension_types": ["extension"], "extension_types": ["extension"],
"min_manifest_version": 3 "min_manifest_version": 3
}, },
"options_page": {
"channel": "stable",
"extension_types": [
"extension",
"legacy_packaged_app",
"hosted_app",
"chromeos_system_extension"
]
},
"options_ui": { "options_ui": {
"channel": "stable", "channel": "stable",
"extension_types": ["extension", "legacy_packaged_app"] "extension_types": ["extension", "legacy_packaged_app"]
@@ -407,6 +438,10 @@
"extension", "platform_app", "legacy_packaged_app" "extension", "platform_app", "legacy_packaged_app"
] ]
}, },
"short_name": {
"channel": "stable",
"extension_types": "all"
},
"sockets": [ "sockets": [
{ {
"channel": "stable", "channel": "stable",
@@ -431,6 +466,10 @@
"channel": "canary", "channel": "canary",
"extension_types": ["extension"] "extension_types": ["extension"]
}, },
"update_url": {
"channel": "stable",
"extension_types": "all"
},
"usb_printers": { "usb_printers": {
"channel": "stable", "channel": "stable",
"extension_types": ["platform_app"] "extension_types": ["platform_app"]

@@ -33,6 +33,7 @@
#include "extensions/common/manifest_handlers/nacl_modules_handler.h" #include "extensions/common/manifest_handlers/nacl_modules_handler.h"
#include "extensions/common/manifest_handlers/oauth2_manifest_handler.h" #include "extensions/common/manifest_handlers/oauth2_manifest_handler.h"
#include "extensions/common/manifest_handlers/offline_enabled_info.h" #include "extensions/common/manifest_handlers/offline_enabled_info.h"
#include "extensions/common/manifest_handlers/options_page_info.h"
#include "extensions/common/manifest_handlers/replacement_apps.h" #include "extensions/common/manifest_handlers/replacement_apps.h"
#include "extensions/common/manifest_handlers/requirements_info.h" #include "extensions/common/manifest_handlers/requirements_info.h"
#include "extensions/common/manifest_handlers/sandboxed_page_info.h" #include "extensions/common/manifest_handlers/sandboxed_page_info.h"
@@ -44,6 +45,7 @@
#if BUILDFLAG(IS_CHROMEOS_ASH) #if BUILDFLAG(IS_CHROMEOS_ASH)
#include "extensions/common/manifest_handlers/action_handlers_handler.h" #include "extensions/common/manifest_handlers/action_handlers_handler.h"
#include "extensions/common/manifest_handlers/input_components_handler.h"
#endif #endif
namespace extensions { namespace extensions {
@@ -75,6 +77,9 @@ void RegisterCommonManifestHandlers() {
registry->RegisterHandler(std::make_unique<HomepageURLHandler>()); registry->RegisterHandler(std::make_unique<HomepageURLHandler>());
registry->RegisterHandler(std::make_unique<IconsHandler>()); registry->RegisterHandler(std::make_unique<IconsHandler>());
registry->RegisterHandler(std::make_unique<IncognitoHandler>()); registry->RegisterHandler(std::make_unique<IncognitoHandler>());
#if BUILDFLAG(IS_CHROMEOS_ASH)
registry->RegisterHandler(std::make_unique<InputComponentsHandler>());
#endif
registry->RegisterHandler(std::make_unique<KioskModeHandler>()); registry->RegisterHandler(std::make_unique<KioskModeHandler>());
registry->RegisterHandler(std::make_unique<MimeTypesHandlerParser>()); registry->RegisterHandler(std::make_unique<MimeTypesHandlerParser>());
#if BUILDFLAG(ENABLE_NACL) #if BUILDFLAG(ENABLE_NACL)
@@ -82,6 +87,7 @@ void RegisterCommonManifestHandlers() {
#endif #endif
registry->RegisterHandler(std::make_unique<OAuth2ManifestHandler>()); registry->RegisterHandler(std::make_unique<OAuth2ManifestHandler>());
registry->RegisterHandler(std::make_unique<OfflineEnabledHandler>()); registry->RegisterHandler(std::make_unique<OfflineEnabledHandler>());
registry->RegisterHandler(std::make_unique<OptionsPageHandler>());
registry->RegisterHandler(std::make_unique<ReplacementAppsHandler>()); registry->RegisterHandler(std::make_unique<ReplacementAppsHandler>());
registry->RegisterHandler(std::make_unique<RequirementsHandler>()); registry->RegisterHandler(std::make_unique<RequirementsHandler>());
registry->RegisterHandler(std::make_unique<SandboxedPageHandler>()); registry->RegisterHandler(std::make_unique<SandboxedPageHandler>());

@@ -3,45 +3,49 @@
// found in the LICENSE file. // found in the LICENSE file.
#include "base/strings/string_util.h" #include "base/strings/string_util.h"
#include "chrome/common/extensions/manifest_tests/chrome_manifest_test.h"
#include "extensions/common/extension.h" #include "extensions/common/extension.h"
#include "extensions/common/manifest_constants.h" #include "extensions/common/manifest_constants.h"
#include "extensions/common/manifest_test.h"
#include "extensions/common/manifest_url_handlers.h" #include "extensions/common/manifest_url_handlers.h"
#include "testing/gtest/include/gtest/gtest.h" #include "testing/gtest/include/gtest/gtest.h"
namespace errors = extensions::manifest_errors; namespace extensions {
using HomepageURLManifestTest = ChromeManifestTest; namespace errors = manifest_errors;
using HomepageURLManifestTest = ManifestTest;
TEST_F(HomepageURLManifestTest, ParseHomepageURLs) { TEST_F(HomepageURLManifestTest, ParseHomepageURLs) {
scoped_refptr<extensions::Extension> extension( scoped_refptr<Extension> extension(
LoadAndExpectSuccess("homepage_valid.json")); LoadAndExpectSuccess("homepage_url_valid.json"));
Testcase testcases[] = { Testcase testcases[] = {
Testcase("homepage_empty.json", Testcase("homepage_url_empty.json",
errors::kInvalidHomepageURL), errors::kInvalidHomepageURL),
Testcase("homepage_invalid.json", Testcase("homepage_url_invalid.json",
errors::kInvalidHomepageURL), errors::kInvalidHomepageURL),
Testcase("homepage_bad_schema.json", Testcase("homepage_url_bad_schema.json",
errors::kInvalidHomepageURL) errors::kInvalidHomepageURL)
}; };
RunTestcases(testcases, std::size(testcases), EXPECT_TYPE_ERROR); RunTestcases(testcases, std::size(testcases), EXPECT_TYPE_ERROR);
} }
TEST_F(HomepageURLManifestTest, GetHomepageURL) { TEST_F(HomepageURLManifestTest, GetHomepageURL) {
scoped_refptr<extensions::Extension> extension( scoped_refptr<Extension> extension(
LoadAndExpectSuccess("homepage_valid.json")); LoadAndExpectSuccess("homepage_url_valid.json"));
EXPECT_EQ(GURL("http://foo.com#bar"), EXPECT_EQ(GURL("http://foo.com#bar"),
extensions::ManifestURL::GetHomepageURL(extension.get())); ManifestURL::GetHomepageURL(extension.get()));
// The Google Gallery URL ends with the id, which depends on the path, which // The Google Gallery URL ends with the id, which depends on the path, which
// can be different in testing, so we just check the part before id. // can be different in testing, so we just check the part before id.
extension = LoadAndExpectSuccess("homepage_google_hosted.json"); extension = LoadAndExpectSuccess("homepage_url_google_hosted.json");
EXPECT_TRUE(base::StartsWith( EXPECT_TRUE(base::StartsWith(
extensions::ManifestURL::GetHomepageURL(extension.get()).spec(), ManifestURL::GetHomepageURL(extension.get()).spec(),
"https://chrome.google.com/webstore/detail/", "https://chrome.google.com/webstore/detail/",
base::CompareCase::INSENSITIVE_ASCII)); base::CompareCase::INSENSITIVE_ASCII));
extension = LoadAndExpectSuccess("homepage_externally_hosted.json"); extension = LoadAndExpectSuccess("homepage_url_externally_hosted.json");
EXPECT_EQ(GURL(), extensions::ManifestURL::GetHomepageURL(extension.get())); EXPECT_EQ(GURL(), ManifestURL::GetHomepageURL(extension.get()));
} }
} // namespace extensions

@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be // Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. // found in the LICENSE file.
#include "chrome/common/extensions/api/input_ime/input_components_handler.h" #include "extensions/common/manifest_handlers/input_components_handler.h"
#include <stddef.h> #include <stddef.h>

@@ -2,8 +2,8 @@
// Use of this source code is governed by a BSD-style license that can be // Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. // found in the LICENSE file.
#ifndef CHROME_COMMON_EXTENSIONS_API_INPUT_IME_INPUT_COMPONENTS_HANDLER_H_ #ifndef EXTENSIONS_COMMON_MANIFEST_HANDLERS_INPUT_COMPONENTS_HANDLER_H_
#define CHROME_COMMON_EXTENSIONS_API_INPUT_IME_INPUT_COMPONENTS_HANDLER_H_ #define EXTENSIONS_COMMON_MANIFEST_HANDLERS_INPUT_COMPONENTS_HANDLER_H_
#include <set> #include <set>
#include <string> #include <string>
@@ -62,4 +62,4 @@ class InputComponentsHandler : public ManifestHandler {
} // namespace extensions } // namespace extensions
#endif // CHROME_COMMON_EXTENSIONS_API_INPUT_IME_INPUT_COMPONENTS_HANDLER_H_ #endif // EXTENSIONS_COMMON_MANIFEST_HANDLERS_INPUT_COMPONENTS_HANDLER_H_

@@ -158,14 +158,11 @@ std::unique_ptr<OptionsPageInfo> OptionsPageInfo::Create(
open_in_tab); open_in_tab);
} }
OptionsPageManifestHandler::OptionsPageManifestHandler() { OptionsPageHandler::OptionsPageHandler() {}
}
OptionsPageManifestHandler::~OptionsPageManifestHandler() { OptionsPageHandler::~OptionsPageHandler() {}
}
bool OptionsPageManifestHandler::Parse(Extension* extension, bool OptionsPageHandler::Parse(Extension* extension, std::u16string* error) {
std::u16string* error) {
std::vector<InstallWarning> install_warnings; std::vector<InstallWarning> install_warnings;
const Manifest* manifest = extension->manifest(); const Manifest* manifest = extension->manifest();
@@ -193,10 +190,9 @@ bool OptionsPageManifestHandler::Parse(Extension* extension,
return true; return true;
} }
bool OptionsPageManifestHandler::Validate( bool OptionsPageHandler::Validate(const Extension* extension,
const Extension* extension, std::string* error,
std::string* error, std::vector<InstallWarning>* warnings) const {
std::vector<InstallWarning>* warnings) const {
// Validate path to the options page. Don't check the URL for hosted apps, // Validate path to the options page. Don't check the URL for hosted apps,
// because they are expected to refer to an external URL. // because they are expected to refer to an external URL.
if (!OptionsPageInfo::HasOptionsPage(extension) || extension->is_hosted_app()) if (!OptionsPageInfo::HasOptionsPage(extension) || extension->is_hosted_app())
@@ -213,7 +209,7 @@ bool OptionsPageManifestHandler::Validate(
return true; return true;
} }
base::span<const char* const> OptionsPageManifestHandler::Keys() const { base::span<const char* const> OptionsPageHandler::Keys() const {
static constexpr const char* kKeys[] = {keys::kOptionsPage, keys::kOptionsUI}; static constexpr const char* kKeys[] = {keys::kOptionsPage, keys::kOptionsUI};
return kKeys; return kKeys;
} }

@@ -68,15 +68,14 @@ class OptionsPageInfo : public Extension::ManifestData {
}; };
// Parses the "options_ui" manifest key and the legacy "options_page" key. // Parses the "options_ui" manifest key and the legacy "options_page" key.
class OptionsPageManifestHandler : public ManifestHandler { class OptionsPageHandler : public ManifestHandler {
public: public:
OptionsPageManifestHandler(); OptionsPageHandler();
OptionsPageManifestHandler(const OptionsPageManifestHandler&) = delete; OptionsPageHandler(const OptionsPageHandler&) = delete;
OptionsPageManifestHandler& operator=(const OptionsPageManifestHandler&) = OptionsPageHandler& operator=(const OptionsPageHandler&) = delete;
delete;
~OptionsPageManifestHandler() override; ~OptionsPageHandler() override;
bool Parse(Extension* extension, std::u16string* error) override; bool Parse(Extension* extension, std::u16string* error) override;
bool Validate(const Extension* extension, bool Validate(const Extension* extension,

@@ -2,8 +2,8 @@
// Use of this source code is governed by a BSD-style license that can be // Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. // found in the LICENSE file.
#include "chrome/common/extensions/manifest_tests/chrome_manifest_test.h"
#include "extensions/common/manifest_constants.h" #include "extensions/common/manifest_constants.h"
#include "extensions/common/manifest_test.h"
#include "extensions/common/manifest_url_handlers.h" #include "extensions/common/manifest_url_handlers.h"
#include "testing/gtest/include/gtest/gtest.h" #include "testing/gtest/include/gtest/gtest.h"
@@ -12,7 +12,7 @@ using extensions::mojom::ManifestLocation;
namespace errors = extensions::manifest_errors; namespace errors = extensions::manifest_errors;
using UpdateURLManifestTest = ChromeManifestTest; using UpdateURLManifestTest = extensions::ManifestTest;
TEST_F(UpdateURLManifestTest, UpdateUrls) { TEST_F(UpdateURLManifestTest, UpdateUrls) {
// Test several valid update urls // Test several valid update urls