summaryrefslogtreecommitdiffstats
path: root/extensions/common
diff options
context:
space:
mode:
authorlimasdf <limasdf@gmail.com>2015-12-17 17:36:16 -0800
committerCommit bot <commit-bot@chromium.org>2015-12-18 01:37:16 +0000
commit704a902182dd1ba3b315563a6a65a7eb107ece79 (patch)
tree584e650445eed56fef7a5dd4693e55ed90bf56e0 /extensions/common
parenta960829376718133c93b1699a997b875e538a262 (diff)
downloadchromium_src-704a902182dd1ba3b315563a6a65a7eb107ece79.zip
chromium_src-704a902182dd1ba3b315563a6a65a7eb107ece79.tar.gz
chromium_src-704a902182dd1ba3b315563a6a65a7eb107ece79.tar.bz2
Use rvalue reference instead of ExtensionBuilder::pass()
C++ 11 enables rvalue reference with std::move() so that removing legacy ListBuilder::Pass(). BUG=563649 TBR=thankis@chromium.org Review URL: https://codereview.chromium.org/1511103003 Cr-Commit-Position: refs/heads/master@{#365969}
Diffstat (limited to 'extensions/common')
-rw-r--r--extensions/common/extension_builder.cc18
-rw-r--r--extensions/common/extension_builder.h10
-rw-r--r--extensions/common/test_util.cc17
-rw-r--r--extensions/common/test_util.h4
4 files changed, 35 insertions, 14 deletions
diff --git a/extensions/common/extension_builder.cc b/extensions/common/extension_builder.cc
index f993e94..b573128 100644
--- a/extensions/common/extension_builder.cc
+++ b/extensions/common/extension_builder.cc
@@ -4,6 +4,8 @@
#include "extensions/common/extension_builder.h"
+#include <utility>
+
#include "extensions/common/extension.h"
namespace extensions {
@@ -14,6 +16,22 @@ ExtensionBuilder::ExtensionBuilder()
}
ExtensionBuilder::~ExtensionBuilder() {}
+ExtensionBuilder::ExtensionBuilder(ExtensionBuilder&& other)
+ : path_(std::move(other.path_)),
+ location_(other.location_),
+ manifest_(std::move(other.manifest_)),
+ flags_(other.flags_),
+ id_(std::move(other.id_)) {}
+
+ExtensionBuilder& ExtensionBuilder::operator=(ExtensionBuilder&& other) {
+ path_ = std::move(other.path_);
+ location_ = other.location_;
+ manifest_ = std::move(other.manifest_);
+ flags_ = other.flags_;
+ id_ = std::move(other.id_);
+ return *this;
+}
+
scoped_refptr<Extension> ExtensionBuilder::Build() {
std::string error;
scoped_refptr<Extension> extension = Extension::Create(
diff --git a/extensions/common/extension_builder.h b/extensions/common/extension_builder.h
index 4b40178..96c81d2 100644
--- a/extensions/common/extension_builder.h
+++ b/extensions/common/extension_builder.h
@@ -24,14 +24,14 @@ class ExtensionBuilder {
ExtensionBuilder();
~ExtensionBuilder();
+ // Move constructor and operator=.
+ ExtensionBuilder(ExtensionBuilder&& other);
+ ExtensionBuilder& operator=(ExtensionBuilder&& other);
+
// Can only be called once, after which it's invalid to use the builder.
// CHECKs that the extension was created successfully.
scoped_refptr<Extension> Build();
- // Workaround to allow you to pass rvalue ExtensionBuilders by reference to
- // other functions, e.g. UseBuilder(ExtensionBuilder().Pass())
- ExtensionBuilder& Pass() { return *this; }
-
// Defaults to FilePath().
ExtensionBuilder& SetPath(const base::FilePath& path);
@@ -58,6 +58,8 @@ class ExtensionBuilder {
scoped_ptr<base::DictionaryValue> manifest_;
int flags_;
std::string id_;
+
+ DISALLOW_COPY_AND_ASSIGN(ExtensionBuilder);
};
} // namespace extensions
diff --git a/extensions/common/test_util.cc b/extensions/common/test_util.cc
index 9a9312a..eb857fd 100644
--- a/extensions/common/test_util.cc
+++ b/extensions/common/test_util.cc
@@ -13,16 +13,16 @@
namespace extensions {
namespace test_util {
-ExtensionBuilder& BuildExtension(ExtensionBuilder& builder) {
- return builder
- .SetManifest(DictionaryBuilder()
- .Set("name", "Test extension")
- .Set("version", "1.0")
- .Set("manifest_version", 2));
+ExtensionBuilder BuildExtension(ExtensionBuilder builder) {
+ builder.SetManifest(DictionaryBuilder()
+ .Set("name", "Test extension")
+ .Set("version", "1.0")
+ .Set("manifest_version", 2));
+ return builder;
}
-ExtensionBuilder& BuildApp(ExtensionBuilder& builder) {
- return builder.SetManifest(
+ExtensionBuilder BuildApp(ExtensionBuilder builder) {
+ builder.SetManifest(
DictionaryBuilder()
.Set("name", "Test extension")
.Set("version", "1.0")
@@ -33,6 +33,7 @@ ExtensionBuilder& BuildApp(ExtensionBuilder& builder) {
extensions::DictionaryBuilder().Set(
"scripts", std::move(extensions::ListBuilder().Append(
"background.js"))))));
+ return builder;
}
scoped_refptr<Extension> CreateEmptyExtension() {
diff --git a/extensions/common/test_util.h b/extensions/common/test_util.h
index 0f02ac0..7220399 100644
--- a/extensions/common/test_util.h
+++ b/extensions/common/test_util.h
@@ -16,10 +16,10 @@ class ExtensionBuilder;
namespace test_util {
// Adds an extension manifest to a builder.
-ExtensionBuilder& BuildExtension(ExtensionBuilder& builder);
+ExtensionBuilder BuildExtension(ExtensionBuilder builder);
// Adds an app manifest to a builder.
-ExtensionBuilder& BuildApp(ExtensionBuilder& builder);
+ExtensionBuilder BuildApp(ExtensionBuilder builder);
// Creates an extension instance that can be attached to an ExtensionFunction
// before running it.