Home | History | Annotate | Download | only in extensions
      1 // Copyright (c) 2012 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 "chrome/common/extensions/extension_test_util.h"
      6 
      7 #include "base/files/file_path.h"
      8 #include "base/json/json_file_value_serializer.h"
      9 #include "base/path_service.h"
     10 #include "base/values.h"
     11 #include "chrome/common/chrome_paths.h"
     12 #include "extensions/common/extension.h"
     13 #include "extensions/common/manifest_constants.h"
     14 #include "testing/gtest/include/gtest/gtest.h"
     15 
     16 using extensions::Extension;
     17 using extensions::Manifest;
     18 
     19 namespace extension_test_util {
     20 
     21 scoped_refptr<Extension> LoadManifestUnchecked(const std::string& dir,
     22                                                const std::string& test_file,
     23                                                Manifest::Location location,
     24                                                int extra_flags,
     25                                                const std::string& id,
     26                                                std::string* error) {
     27   base::FilePath path;
     28   PathService::Get(chrome::DIR_TEST_DATA, &path);
     29   path = path.AppendASCII("extensions")
     30              .AppendASCII(dir)
     31              .AppendASCII(test_file);
     32 
     33   JSONFileValueSerializer serializer(path);
     34   scoped_ptr<base::Value> result(serializer.Deserialize(NULL, error));
     35   if (!result)
     36     return NULL;
     37   const base::DictionaryValue* dict;
     38   CHECK(result->GetAsDictionary(&dict));
     39 
     40   scoped_refptr<Extension> extension = Extension::Create(
     41       path.DirName(), location, *dict, extra_flags, id, error);
     42   return extension;
     43 }
     44 
     45 scoped_refptr<Extension> LoadManifestUnchecked(const std::string& dir,
     46                                                const std::string& test_file,
     47                                                Manifest::Location location,
     48                                                int extra_flags,
     49                                                std::string* error) {
     50   return LoadManifestUnchecked(
     51       dir, test_file, location, extra_flags, std::string(), error);
     52 }
     53 
     54 scoped_refptr<Extension> LoadManifest(const std::string& dir,
     55                                       const std::string& test_file,
     56                                       Manifest::Location location,
     57                                       int extra_flags) {
     58   std::string error;
     59   scoped_refptr<Extension> extension =
     60       LoadManifestUnchecked(dir, test_file, location, extra_flags, &error);
     61 
     62   EXPECT_TRUE(extension.get()) << test_file << ":" << error;
     63   return extension;
     64 }
     65 
     66 scoped_refptr<Extension> LoadManifest(const std::string& dir,
     67                                       const std::string& test_file,
     68                                       int extra_flags) {
     69   return LoadManifest(dir, test_file, Manifest::INVALID_LOCATION, extra_flags);
     70 }
     71 
     72 scoped_refptr<Extension> LoadManifestStrict(const std::string& dir,
     73                                             const std::string& test_file) {
     74   return LoadManifest(dir, test_file, Extension::NO_FLAGS);
     75 }
     76 
     77 scoped_refptr<Extension> LoadManifest(const std::string& dir,
     78                                       const std::string& test_file) {
     79   return LoadManifest(dir, test_file, Extension::NO_FLAGS);
     80 }
     81 
     82 }  // namespace extension_test_util
     83