1 // Copyright 2014 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/test_util.h" 6 7 #include "base/json/json_reader.h" 8 #include "base/values.h" 9 #include "extensions/common/extension.h" 10 #include "extensions/common/extension_builder.h" 11 #include "extensions/common/value_builder.h" 12 #include "testing/gtest/include/gtest/gtest.h" 13 14 namespace extensions { 15 namespace test_util { 16 17 ExtensionBuilder& BuildExtension(ExtensionBuilder& builder) { 18 return builder 19 .SetManifest(DictionaryBuilder() 20 .Set("name", "Test extension") 21 .Set("version", "1.0") 22 .Set("manifest_version", 2)); 23 } 24 25 scoped_refptr<Extension> CreateExtensionWithID(const std::string& id) { 26 return ExtensionBuilder() 27 .SetManifest( 28 DictionaryBuilder().Set("name", "test").Set("version", "0.1")) 29 .SetID(id) 30 .Build(); 31 } 32 33 scoped_ptr<base::DictionaryValue> ParseJsonDictionaryWithSingleQuotes( 34 std::string json) { 35 std::replace(json.begin(), json.end(), '\'', '"'); 36 std::string error_msg; 37 scoped_ptr<base::Value> result(base::JSONReader::ReadAndReturnError( 38 json, base::JSON_ALLOW_TRAILING_COMMAS, NULL, &error_msg)); 39 scoped_ptr<base::DictionaryValue> result_dict; 40 if (result && result->IsType(base::Value::TYPE_DICTIONARY)) { 41 result_dict.reset(static_cast<base::DictionaryValue*>(result.release())); 42 } else { 43 ADD_FAILURE() << "Failed to parse \"" << json << "\": " << error_msg; 44 result_dict.reset(new base::DictionaryValue()); 45 } 46 return result_dict.Pass(); 47 } 48 49 } // namespace test_util 50 } // namespace extensions 51