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 @@
#include "base/strings/utf_string_conversions.h"
#include "base/values.h"
#include "chrome/browser/profiles/profiles_state.h"
#include "chrome/common/extensions/api/omnibox.h"
#include "chrome/grit/generated_resources.h"
#include "extensions/browser/device_local_account_util.h"
#include "extensions/common/api/incognito.h"
......@@ -185,7 +186,7 @@ const char* const kSafeManifestEntries[] = {
// A bit risky as the extensions sees all keystrokes entered into the
// omnibox after the search key matches, but generally we deem URLs fair
// game.
emk::kOmnibox,
::extensions::api::omnibox::ManifestKeys::kOmnibox,
// Special-cased in IsSafeForPublicSession(). Subject to permission
// restrictions.
......
......@@ -10,6 +10,7 @@
#include "chrome/browser/extensions/extension_service.h"
#include "chrome/browser/extensions/load_error_reporter.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 "content/public/test/browser_task_environment.h"
#include "extensions/browser/extension_system.h"
......@@ -39,10 +40,10 @@ class ExtensionInstalledBubbleModelTest : public BrowserWithTestWindowTest {
void AddOmniboxKeyword(extensions::ExtensionBuilder* builder,
const std::string& keyword) {
using ManifestKeys = extensions::api::omnibox::ManifestKeys;
auto info = std::make_unique<base::DictionaryValue>();
info->SetStringKey("keyword", keyword);
builder->SetManifestKey(extensions::manifest_keys::kOmnibox,
std::move(info));
info->SetStringKey(ManifestKeys::Omnibox::kKeyword, keyword);
builder->SetManifestKey(ManifestKeys::kOmnibox, std::move(info));
}
void AddRegularAction(extensions::ExtensionBuilder* builder) {
......
......@@ -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": [
{
"name": "sendSuggestions",
......
......@@ -9,6 +9,7 @@
#include "base/strings/string_util.h"
#include "base/strings/utf_string_conversions.h"
#include "base/values.h"
#include "chrome/common/extensions/api/omnibox.h"
#include "extensions/common/extension.h"
#include "extensions/common/manifest.h"
#include "extensions/common/manifest_constants.h"
......@@ -17,15 +18,14 @@ namespace extensions {
namespace {
// Manifest keys.
const char kKeyword[] = "keyword";
using ManifestKeys = api::omnibox::ManifestKeys;
} // namespace
// static
const std::string& OmniboxInfo::GetKeyword(const Extension* extension) {
OmniboxInfo* info = static_cast<OmniboxInfo*>(
extension->GetManifestData(manifest_keys::kOmnibox));
extension->GetManifestData(ManifestKeys::kOmnibox));
return info ? info->keyword : base::EmptyString();
}
......@@ -36,21 +36,25 @@ OmniboxHandler::~OmniboxHandler() {
}
bool OmniboxHandler::Parse(Extension* extension, base::string16* error) {
std::unique_ptr<OmniboxInfo> info(new OmniboxInfo);
const base::DictionaryValue* dict = NULL;
if (!extension->manifest()->GetDictionary(manifest_keys::kOmnibox,
&dict) ||
!dict->GetString(kKeyword, &info->keyword) ||
info->keyword.empty()) {
*error = base::ASCIIToUTF16(manifest_errors::kInvalidOmniboxKeyword);
ManifestKeys manifest_keys;
if (!ManifestKeys::ParseFromDictionary(*extension->manifest()->value(),
&manifest_keys, error)) {
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;
}
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;
}
......
......@@ -107,7 +107,6 @@ const char kOAuth2AutoApprove[] = "oauth2.auto_approve";
const char kOAuth2ClientId[] = "oauth2.client_id";
const char kOAuth2Scopes[] = "oauth2.scopes";
const char kOfflineEnabled[] = "offline_enabled";
const char kOmnibox[] = "omnibox";
const char kOmniboxKeyword[] = "omnibox.keyword";
const char kOptionalPermissions[] = "optional_permissions";
const char kOptionsPage[] = "options_page";
......@@ -544,8 +543,8 @@ const char kInvalidOAuth2Scopes[] =
"Invalid value for 'oauth2.scopes'.";
const char kInvalidOfflineEnabled[] =
"Invalid value for 'offline_enabled'.";
const char kInvalidOmniboxKeyword[] =
"Invalid value for 'omnibox.keyword'.";
const char kEmptyOmniboxKeyword[] =
"Invalid value for 'omnibox.keyword'. It must be non-empty.";
const char kInvalidOptionsPage[] = "Invalid value for '*'.";
const char kInvalidOptionsPageExpectUrlInPackage[] =
"Invalid value for 'options_page'. Value must be a relative path.";
......
......@@ -111,7 +111,6 @@ extern const char kOAuth2AutoApprove[];
extern const char kOAuth2ClientId[];
extern const char kOAuth2Scopes[];
extern const char kOfflineEnabled[];
extern const char kOmnibox[];
extern const char kOmniboxKeyword[];
extern const char kOptionalPermissions[];
extern const char kOptionsPage[];
......@@ -396,7 +395,7 @@ extern const char kInvalidOAuth2AutoApprove[];
extern const char kInvalidOAuth2ClientId[];
extern const char kInvalidOAuth2Scopes[];
extern const char kInvalidOfflineEnabled[];
extern const char kInvalidOmniboxKeyword[];
extern const char kEmptyOmniboxKeyword[];
extern const char kInvalidOptionsUIChromeStyle[];
extern const char kInvalidOptionsUIOpenInTab[];
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