Commit b19a07b3 authored by Karandeep Bhatia's avatar Karandeep Bhatia Committed by Chromium LUCI CQ

Use auto-generated manifest parsing to parse "omnibox" manifest key.

Autogenerated header portion: https://paste.googleplex.com/5925546069327872
Autogenerated cc file portion: https://paste.googleplex.com/5362596115906560

BUG=1113513

Change-Id: I237b6fe5744059296754d5dc93213c9b9d5ea83e
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2616814Reviewed-by: default avatarDevlin <rdevlin.cronin@chromium.org>
Commit-Queue: Karan Bhatia <karandeepb@chromium.org>
Cr-Commit-Position: refs/heads/master@{#842498}
parent 334b1dda
...@@ -15,6 +15,7 @@ ...@@ -15,6 +15,7 @@
#include "base/strings/utf_string_conversions.h" #include "base/strings/utf_string_conversions.h"
#include "base/values.h" #include "base/values.h"
#include "chrome/browser/profiles/profiles_state.h" #include "chrome/browser/profiles/profiles_state.h"
#include "chrome/common/extensions/api/omnibox.h"
#include "chrome/grit/generated_resources.h" #include "chrome/grit/generated_resources.h"
#include "extensions/browser/device_local_account_util.h" #include "extensions/browser/device_local_account_util.h"
#include "extensions/common/api/incognito.h" #include "extensions/common/api/incognito.h"
...@@ -185,7 +186,7 @@ const char* const kSafeManifestEntries[] = { ...@@ -185,7 +186,7 @@ const char* const kSafeManifestEntries[] = {
// A bit risky as the extensions sees all keystrokes entered into the // A bit risky as the extensions sees all keystrokes entered into the
// omnibox after the search key matches, but generally we deem URLs fair // omnibox after the search key matches, but generally we deem URLs fair
// game. // game.
emk::kOmnibox, ::extensions::api::omnibox::ManifestKeys::kOmnibox,
// Special-cased in IsSafeForPublicSession(). Subject to permission // Special-cased in IsSafeForPublicSession(). Subject to permission
// restrictions. // restrictions.
......
...@@ -10,6 +10,7 @@ ...@@ -10,6 +10,7 @@
#include "chrome/browser/extensions/extension_service.h" #include "chrome/browser/extensions/extension_service.h"
#include "chrome/browser/extensions/load_error_reporter.h" #include "chrome/browser/extensions/load_error_reporter.h"
#include "chrome/browser/extensions/test_extension_system.h" #include "chrome/browser/extensions/test_extension_system.h"
#include "chrome/common/extensions/api/omnibox.h"
#include "chrome/test/base/browser_with_test_window_test.h" #include "chrome/test/base/browser_with_test_window_test.h"
#include "content/public/test/browser_task_environment.h" #include "content/public/test/browser_task_environment.h"
#include "extensions/browser/extension_system.h" #include "extensions/browser/extension_system.h"
...@@ -39,10 +40,10 @@ class ExtensionInstalledBubbleModelTest : public BrowserWithTestWindowTest { ...@@ -39,10 +40,10 @@ class ExtensionInstalledBubbleModelTest : public BrowserWithTestWindowTest {
void AddOmniboxKeyword(extensions::ExtensionBuilder* builder, void AddOmniboxKeyword(extensions::ExtensionBuilder* builder,
const std::string& keyword) { const std::string& keyword) {
using ManifestKeys = extensions::api::omnibox::ManifestKeys;
auto info = std::make_unique<base::DictionaryValue>(); auto info = std::make_unique<base::DictionaryValue>();
info->SetStringKey("keyword", keyword); info->SetStringKey(ManifestKeys::Omnibox::kKeyword, keyword);
builder->SetManifestKey(extensions::manifest_keys::kOmnibox, builder->SetManifestKey(ManifestKeys::kOmnibox, std::move(info));
std::move(info));
} }
void AddRegularAction(extensions::ExtensionBuilder* builder) { void AddRegularAction(extensions::ExtensionBuilder* builder) {
......
...@@ -116,6 +116,17 @@ ...@@ -116,6 +116,17 @@
} }
} }
], ],
"manifest_keys": {
"omnibox": {
"type": "object",
"properties": {
"keyword": {
"type": "string",
"description": "The keyword to register with the omnibox. Must be non-empty."
}
}
}
},
"functions": [ "functions": [
{ {
"name": "sendSuggestions", "name": "sendSuggestions",
......
...@@ -9,6 +9,7 @@ ...@@ -9,6 +9,7 @@
#include "base/strings/string_util.h" #include "base/strings/string_util.h"
#include "base/strings/utf_string_conversions.h" #include "base/strings/utf_string_conversions.h"
#include "base/values.h" #include "base/values.h"
#include "chrome/common/extensions/api/omnibox.h"
#include "extensions/common/extension.h" #include "extensions/common/extension.h"
#include "extensions/common/manifest.h" #include "extensions/common/manifest.h"
#include "extensions/common/manifest_constants.h" #include "extensions/common/manifest_constants.h"
...@@ -17,15 +18,14 @@ namespace extensions { ...@@ -17,15 +18,14 @@ namespace extensions {
namespace { namespace {
// Manifest keys. using ManifestKeys = api::omnibox::ManifestKeys;
const char kKeyword[] = "keyword";
} // namespace } // namespace
// static // static
const std::string& OmniboxInfo::GetKeyword(const Extension* extension) { const std::string& OmniboxInfo::GetKeyword(const Extension* extension) {
OmniboxInfo* info = static_cast<OmniboxInfo*>( OmniboxInfo* info = static_cast<OmniboxInfo*>(
extension->GetManifestData(manifest_keys::kOmnibox)); extension->GetManifestData(ManifestKeys::kOmnibox));
return info ? info->keyword : base::EmptyString(); return info ? info->keyword : base::EmptyString();
} }
...@@ -36,21 +36,25 @@ OmniboxHandler::~OmniboxHandler() { ...@@ -36,21 +36,25 @@ OmniboxHandler::~OmniboxHandler() {
} }
bool OmniboxHandler::Parse(Extension* extension, base::string16* error) { bool OmniboxHandler::Parse(Extension* extension, base::string16* error) {
std::unique_ptr<OmniboxInfo> info(new OmniboxInfo); ManifestKeys manifest_keys;
const base::DictionaryValue* dict = NULL; if (!ManifestKeys::ParseFromDictionary(*extension->manifest()->value(),
if (!extension->manifest()->GetDictionary(manifest_keys::kOmnibox, &manifest_keys, error)) {
&dict) ||
!dict->GetString(kKeyword, &info->keyword) ||
info->keyword.empty()) {
*error = base::ASCIIToUTF16(manifest_errors::kInvalidOmniboxKeyword);
return false; return false;
} }
extension->SetManifestData(manifest_keys::kOmnibox, std::move(info));
auto info = std::make_unique<OmniboxInfo>();
info->keyword = manifest_keys.omnibox.keyword;
if (info->keyword.empty()) {
*error = base::ASCIIToUTF16(manifest_errors::kEmptyOmniboxKeyword);
return false;
}
extension->SetManifestData(ManifestKeys::kOmnibox, std::move(info));
return true; return true;
} }
base::span<const char* const> OmniboxHandler::Keys() const { base::span<const char* const> OmniboxHandler::Keys() const {
static constexpr const char* kKeys[] = {manifest_keys::kOmnibox}; static constexpr const char* kKeys[] = {ManifestKeys::kOmnibox};
return kKeys; return kKeys;
} }
......
...@@ -107,7 +107,6 @@ const char kOAuth2AutoApprove[] = "oauth2.auto_approve"; ...@@ -107,7 +107,6 @@ const char kOAuth2AutoApprove[] = "oauth2.auto_approve";
const char kOAuth2ClientId[] = "oauth2.client_id"; const char kOAuth2ClientId[] = "oauth2.client_id";
const char kOAuth2Scopes[] = "oauth2.scopes"; const char kOAuth2Scopes[] = "oauth2.scopes";
const char kOfflineEnabled[] = "offline_enabled"; const char kOfflineEnabled[] = "offline_enabled";
const char kOmnibox[] = "omnibox";
const char kOmniboxKeyword[] = "omnibox.keyword"; const char kOmniboxKeyword[] = "omnibox.keyword";
const char kOptionalPermissions[] = "optional_permissions"; const char kOptionalPermissions[] = "optional_permissions";
const char kOptionsPage[] = "options_page"; const char kOptionsPage[] = "options_page";
...@@ -544,8 +543,8 @@ const char kInvalidOAuth2Scopes[] = ...@@ -544,8 +543,8 @@ const char kInvalidOAuth2Scopes[] =
"Invalid value for 'oauth2.scopes'."; "Invalid value for 'oauth2.scopes'.";
const char kInvalidOfflineEnabled[] = const char kInvalidOfflineEnabled[] =
"Invalid value for 'offline_enabled'."; "Invalid value for 'offline_enabled'.";
const char kInvalidOmniboxKeyword[] = const char kEmptyOmniboxKeyword[] =
"Invalid value for 'omnibox.keyword'."; "Invalid value for 'omnibox.keyword'. It must be non-empty.";
const char kInvalidOptionsPage[] = "Invalid value for '*'."; const char kInvalidOptionsPage[] = "Invalid value for '*'.";
const char kInvalidOptionsPageExpectUrlInPackage[] = const char kInvalidOptionsPageExpectUrlInPackage[] =
"Invalid value for 'options_page'. Value must be a relative path."; "Invalid value for 'options_page'. Value must be a relative path.";
......
...@@ -111,7 +111,6 @@ extern const char kOAuth2AutoApprove[]; ...@@ -111,7 +111,6 @@ extern const char kOAuth2AutoApprove[];
extern const char kOAuth2ClientId[]; extern const char kOAuth2ClientId[];
extern const char kOAuth2Scopes[]; extern const char kOAuth2Scopes[];
extern const char kOfflineEnabled[]; extern const char kOfflineEnabled[];
extern const char kOmnibox[];
extern const char kOmniboxKeyword[]; extern const char kOmniboxKeyword[];
extern const char kOptionalPermissions[]; extern const char kOptionalPermissions[];
extern const char kOptionsPage[]; extern const char kOptionsPage[];
...@@ -396,7 +395,7 @@ extern const char kInvalidOAuth2AutoApprove[]; ...@@ -396,7 +395,7 @@ extern const char kInvalidOAuth2AutoApprove[];
extern const char kInvalidOAuth2ClientId[]; extern const char kInvalidOAuth2ClientId[];
extern const char kInvalidOAuth2Scopes[]; extern const char kInvalidOAuth2Scopes[];
extern const char kInvalidOfflineEnabled[]; extern const char kInvalidOfflineEnabled[];
extern const char kInvalidOmniboxKeyword[]; extern const char kEmptyOmniboxKeyword[];
extern const char kInvalidOptionsUIChromeStyle[]; extern const char kInvalidOptionsUIChromeStyle[];
extern const char kInvalidOptionsUIOpenInTab[]; extern const char kInvalidOptionsUIOpenInTab[];
extern const char kInvalidOptionsPage[]; extern const char kInvalidOptionsPage[];
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment