• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #include "extensions/common/extension_builder.h"
6 
7 #include "extensions/common/extension.h"
8 
9 namespace extensions {
10 
ExtensionBuilder()11 ExtensionBuilder::ExtensionBuilder()
12     : location_(Manifest::UNPACKED),
13       flags_(Extension::NO_FLAGS) {
14 }
~ExtensionBuilder()15 ExtensionBuilder::~ExtensionBuilder() {}
16 
Build()17 scoped_refptr<Extension> ExtensionBuilder::Build() {
18   std::string error;
19   scoped_refptr<Extension> extension = Extension::Create(
20       path_,
21       location_,
22       *manifest_,
23       flags_,
24       id_,
25       &error);
26   CHECK_EQ("", error);
27   return extension;
28 }
29 
SetPath(const base::FilePath & path)30 ExtensionBuilder& ExtensionBuilder::SetPath(const base::FilePath& path) {
31   path_ = path;
32   return *this;
33 }
34 
SetLocation(Manifest::Location location)35 ExtensionBuilder& ExtensionBuilder::SetLocation(Manifest::Location location) {
36   location_ = location;
37   return *this;
38 }
39 
SetManifest(scoped_ptr<base::DictionaryValue> manifest)40 ExtensionBuilder& ExtensionBuilder::SetManifest(
41     scoped_ptr<base::DictionaryValue> manifest) {
42   manifest_ = manifest.Pass();
43   return *this;
44 }
45 
MergeManifest(DictionaryBuilder & builder)46 ExtensionBuilder& ExtensionBuilder::MergeManifest(DictionaryBuilder& builder) {
47   manifest_->MergeDictionary(builder.Build().get());
48   return *this;
49 }
50 
AddFlags(int init_from_value_flags)51 ExtensionBuilder& ExtensionBuilder::AddFlags(int init_from_value_flags) {
52   flags_ |= init_from_value_flags;
53   return *this;
54 }
55 
SetID(const std::string & id)56 ExtensionBuilder& ExtensionBuilder::SetID(const std::string& id) {
57   id_ = id;
58   return *this;
59 }
60 
61 }  // namespace extensions
62