Skip to content

Commit

Permalink
Use StringPiece for WebUI arguments that are usually literals
Browse files Browse the repository at this point in the history
Constructs fewer strings and emits less code (~88KiB saved on an
official Linux build).

Change-Id: Ie97f4cd3ec991b4ba293735382d9f8bd2b9f3245
Reviewed-on: https://chromium-review.googlesource.com/986504
Reviewed-by: John Abd-El-Malek <jam@chromium.org>
Commit-Queue: Daniel Cheng <dcheng@chromium.org>
Cr-Commit-Position: refs/heads/master@{#547162}
  • Loading branch information
zetafunction authored and Commit Bot committed Mar 30, 2018
1 parent 571e6df commit 1d64b47
Show file tree
Hide file tree
Showing 7 changed files with 33 additions and 31 deletions.
24 changes: 12 additions & 12 deletions content/browser/webui/web_ui_data_source_impl.cc
Original file line number Diff line number Diff line change
Expand Up @@ -112,24 +112,24 @@ WebUIDataSourceImpl::WebUIDataSourceImpl(const std::string& source_name)
WebUIDataSourceImpl::~WebUIDataSourceImpl() {
}

void WebUIDataSourceImpl::AddString(const std::string& name,
void WebUIDataSourceImpl::AddString(base::StringPiece name,
const base::string16& value) {
// TODO(dschuyler): Share only one copy of these strings.
localized_strings_.SetKey(name, base::Value(value));
replacements_[name] = base::UTF16ToUTF8(value);
replacements_[name.as_string()] = base::UTF16ToUTF8(value);
}

void WebUIDataSourceImpl::AddString(const std::string& name,
void WebUIDataSourceImpl::AddString(base::StringPiece name,
const std::string& value) {
localized_strings_.SetKey(name, base::Value(value));
replacements_[name] = value;
replacements_[name.as_string()] = value;
}

void WebUIDataSourceImpl::AddLocalizedString(const std::string& name, int ids) {
void WebUIDataSourceImpl::AddLocalizedString(base::StringPiece name, int ids) {
std::string utf8_str =
base::UTF16ToUTF8(GetContentClient()->GetLocalizedString(ids));
localized_strings_.SetKey(name, base::Value(utf8_str));
replacements_[name] = utf8_str;
replacements_[name.as_string()] = utf8_str;
}

void WebUIDataSourceImpl::AddLocalizedStrings(
Expand All @@ -139,7 +139,7 @@ void WebUIDataSourceImpl::AddLocalizedStrings(
&replacements_);
}

void WebUIDataSourceImpl::AddBoolean(const std::string& name, bool value) {
void WebUIDataSourceImpl::AddBoolean(base::StringPiece name, bool value) {
localized_strings_.SetBoolean(name, value);
// TODO(dschuyler): Change name of |localized_strings_| to |load_time_data_|
// or similar. These values haven't been found as strings for
Expand All @@ -148,21 +148,21 @@ void WebUIDataSourceImpl::AddBoolean(const std::string& name, bool value) {
// replacements.
}

void WebUIDataSourceImpl::AddInteger(const std::string& name, int32_t value) {
void WebUIDataSourceImpl::AddInteger(base::StringPiece name, int32_t value) {
localized_strings_.SetInteger(name, value);
}

void WebUIDataSourceImpl::SetJsonPath(const std::string& path) {
void WebUIDataSourceImpl::SetJsonPath(base::StringPiece path) {
DCHECK(json_path_.empty());
DCHECK(!path.empty());

json_path_ = path;
json_path_ = path.as_string();
excluded_paths_.insert(json_path_);
}

void WebUIDataSourceImpl::AddResourcePath(const std::string &path,
void WebUIDataSourceImpl::AddResourcePath(base::StringPiece path,
int resource_id) {
path_to_idr_map_[path] = resource_id;
path_to_idr_map_[path.as_string()] = resource_id;
}

void WebUIDataSourceImpl::SetDefaultResource(int resource_id) {
Expand Down
14 changes: 7 additions & 7 deletions content/browser/webui/web_ui_data_source_impl.h
Original file line number Diff line number Diff line change
Expand Up @@ -30,15 +30,15 @@ class CONTENT_EXPORT WebUIDataSourceImpl : public URLDataSourceImpl,
public WebUIDataSource {
public:
// WebUIDataSource implementation:
void AddString(const std::string& name, const base::string16& value) override;
void AddString(const std::string& name, const std::string& value) override;
void AddLocalizedString(const std::string& name, int ids) override;
void AddString(base::StringPiece name, const base::string16& value) override;
void AddString(base::StringPiece name, const std::string& value) override;
void AddLocalizedString(base::StringPiece name, int ids) override;
void AddLocalizedStrings(
const base::DictionaryValue& localized_strings) override;
void AddBoolean(const std::string& name, bool value) override;
void AddInteger(const std::string& name, int32_t value) override;
void SetJsonPath(const std::string& path) override;
void AddResourcePath(const std::string& path, int resource_id) override;
void AddBoolean(base::StringPiece name, bool value) override;
void AddInteger(base::StringPiece name, int32_t value) override;
void SetJsonPath(base::StringPiece path) override;
void AddResourcePath(base::StringPiece path, int resource_id) override;
void SetDefaultResource(int resource_id) override;
void SetRequestFilter(
const WebUIDataSource::HandleRequestCallback& callback) override;
Expand Down
4 changes: 2 additions & 2 deletions content/browser/webui/web_ui_impl.cc
Original file line number Diff line number Diff line change
Expand Up @@ -239,9 +239,9 @@ void WebUIImpl::CallJavascriptFunctionUnsafe(
ExecuteJavascript(GetJavascriptCall(function_name, args));
}

void WebUIImpl::RegisterMessageCallback(const std::string &message,
void WebUIImpl::RegisterMessageCallback(base::StringPiece message,
const MessageCallback& callback) {
message_callbacks_.insert(std::make_pair(message, callback));
message_callbacks_.emplace(message, callback);
}

void WebUIImpl::ProcessWebUIMessage(const GURL& source_url,
Expand Down
2 changes: 1 addition & 1 deletion content/browser/webui/web_ui_impl.h
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ class CONTENT_EXPORT WebUIImpl : public WebUI,
int GetBindings() const override;
void SetBindings(int bindings) override;
void AddMessageHandler(std::unique_ptr<WebUIMessageHandler> handler) override;
void RegisterMessageCallback(const std::string& message,
void RegisterMessageCallback(base::StringPiece message,
const MessageCallback& callback) override;
void ProcessWebUIMessage(const GURL& source_url,
const std::string& message,
Expand Down
3 changes: 2 additions & 1 deletion content/public/browser/web_ui.h
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@

#include "base/callback.h"
#include "base/strings/string16.h"
#include "base/strings/string_piece.h"
#include "content/common/content_export.h"
#include "ui/base/page_transition_types.h"

Expand Down Expand Up @@ -72,7 +73,7 @@ class CONTENT_EXPORT WebUI {
// Used by WebUIMessageHandlers. If the given message is already registered,
// the call has no effect.
using MessageCallback = base::RepeatingCallback<void(const base::ListValue*)>;
virtual void RegisterMessageCallback(const std::string& message,
virtual void RegisterMessageCallback(base::StringPiece message,
const MessageCallback& callback) = 0;

// This is only needed if an embedder overrides handling of a WebUIMessage and
Expand Down
15 changes: 8 additions & 7 deletions content/public/browser/web_ui_data_source.h
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@

#include "base/callback.h"
#include "base/strings/string16.h"
#include "base/strings/string_piece.h"
#include "content/common/content_export.h"

namespace base {
Expand Down Expand Up @@ -44,33 +45,33 @@ class WebUIDataSource {
std::unique_ptr<base::DictionaryValue> update);

// Adds a string keyed to its name to our dictionary.
virtual void AddString(const std::string& name,
virtual void AddString(base::StringPiece name,
const base::string16& value) = 0;

// Adds a string keyed to its name to our dictionary.
virtual void AddString(const std::string& name, const std::string& value) = 0;
virtual void AddString(base::StringPiece name, const std::string& value) = 0;

// Adds a localized string with resource |ids| keyed to its name to our
// dictionary.
virtual void AddLocalizedString(const std::string& name, int ids) = 0;
virtual void AddLocalizedString(base::StringPiece name, int ids) = 0;

// Add strings from |localized_strings| to our dictionary.
virtual void AddLocalizedStrings(
const base::DictionaryValue& localized_strings) = 0;

// Adds a boolean keyed to its name to our dictionary.
virtual void AddBoolean(const std::string& name, bool value) = 0;
virtual void AddBoolean(base::StringPiece name, bool value) = 0;

// Adds a signed 32-bit integer keyed to its name to our dictionary. Larger
// integers may not be exactly representable in JavaScript. See
// MAX_SAFE_INTEGER in /v8/src/globals.h.
virtual void AddInteger(const std::string& name, int32_t value) = 0;
virtual void AddInteger(base::StringPiece name, int32_t value) = 0;

// Sets the path which will return the JSON strings.
virtual void SetJsonPath(const std::string& path) = 0;
virtual void SetJsonPath(base::StringPiece path) = 0;

// Adds a mapping between a path name and a resource to return.
virtual void AddResourcePath(const std::string& path, int resource_id) = 0;
virtual void AddResourcePath(base::StringPiece path, int resource_id) = 0;

// Sets the resource to returned when no other paths match.
virtual void SetDefaultResource(int resource_id) = 0;
Expand Down
2 changes: 1 addition & 1 deletion content/public/test/test_web_ui.h
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ class TestWebUI : public WebUI {
int GetBindings() const override;
void SetBindings(int bindings) override {}
void AddMessageHandler(std::unique_ptr<WebUIMessageHandler> handler) override;
void RegisterMessageCallback(const std::string& message,
void RegisterMessageCallback(base::StringPiece message,
const MessageCallback& callback) override {}
void ProcessWebUIMessage(const GURL& source_url,
const std::string& message,
Expand Down

0 comments on commit 1d64b47

Please sign in to comment.