• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 
LoadManifestUnchecked(const std::string & dir,const std::string & test_file,Manifest::Location location,int extra_flags,const std::string & id,std::string * error)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 
LoadManifestUnchecked(const std::string & dir,const std::string & test_file,Manifest::Location location,int extra_flags,std::string * error)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 
LoadManifest(const std::string & dir,const std::string & test_file,Manifest::Location location,int extra_flags)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 
LoadManifest(const std::string & dir,const std::string & test_file,int extra_flags)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 
LoadManifestStrict(const std::string & dir,const std::string & test_file)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 
LoadManifest(const std::string & dir,const std::string & test_file)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