1f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
5f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "extensions/common/extension_builder.h"
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
7f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "extensions/common/extension.h"
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace extensions {
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)ExtensionBuilder::ExtensionBuilder()
122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    : location_(Manifest::UNPACKED),
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      flags_(Extension::NO_FLAGS) {
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)ExtensionBuilder::~ExtensionBuilder() {}
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)scoped_refptr<Extension> ExtensionBuilder::Build() {
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  std::string error;
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  scoped_refptr<Extension> extension = Extension::Create(
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      path_,
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      location_,
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      *manifest_,
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      flags_,
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      id_,
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      &error);
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CHECK_EQ("", error);
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return extension;
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)ExtensionBuilder& ExtensionBuilder::SetPath(const base::FilePath& path) {
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  path_ = path;
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return *this;
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)ExtensionBuilder& ExtensionBuilder::SetLocation(Manifest::Location location) {
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  location_ = location;
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return *this;
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)ExtensionBuilder& ExtensionBuilder::SetManifest(
417d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)    scoped_ptr<base::DictionaryValue> manifest) {
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  manifest_ = manifest.Pass();
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return *this;
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
46a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)ExtensionBuilder& ExtensionBuilder::MergeManifest(DictionaryBuilder& builder) {
47a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)  manifest_->MergeDictionary(builder.Build().get());
48a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)  return *this;
49a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)}
50a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)
515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)ExtensionBuilder& ExtensionBuilder::AddFlags(int init_from_value_flags) {
525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  flags_ |= init_from_value_flags;
535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return *this;
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)ExtensionBuilder& ExtensionBuilder::SetID(const std::string& id) {
575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  id_ = id;
585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return *this;
595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace extensions
62