Home | History | Annotate | Download | only in common
      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