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 11 ExtensionBuilder::ExtensionBuilder() 12 : location_(Manifest::UNPACKED), 13 flags_(Extension::NO_FLAGS) { 14 } 15 ExtensionBuilder::~ExtensionBuilder() {} 16 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 30 ExtensionBuilder& ExtensionBuilder::SetPath(const base::FilePath& path) { 31 path_ = path; 32 return *this; 33 } 34 35 ExtensionBuilder& ExtensionBuilder::SetLocation(Manifest::Location location) { 36 location_ = location; 37 return *this; 38 } 39 40 ExtensionBuilder& ExtensionBuilder::SetManifest( 41 scoped_ptr<base::DictionaryValue> manifest) { 42 manifest_ = manifest.Pass(); 43 return *this; 44 } 45 46 ExtensionBuilder& ExtensionBuilder::MergeManifest(DictionaryBuilder& builder) { 47 manifest_->MergeDictionary(builder.Build().get()); 48 return *this; 49 } 50 51 ExtensionBuilder& ExtensionBuilder::AddFlags(int init_from_value_flags) { 52 flags_ |= init_from_value_flags; 53 return *this; 54 } 55 56 ExtensionBuilder& ExtensionBuilder::SetID(const std::string& id) { 57 id_ = id; 58 return *this; 59 } 60 61 } // namespace extensions 62