Index: chrome/common/extensions/api/extension_api_feature_unittest.cc |
diff --git a/chrome/common/extensions/api/extension_api_feature_unittest.cc b/chrome/common/extensions/api/extension_api_feature_unittest.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..6dbb9f1c88789679eb280e59fa382d2a27f8fb66 |
--- /dev/null |
+++ b/chrome/common/extensions/api/extension_api_feature_unittest.cc |
@@ -0,0 +1,67 @@ |
+// Copyright (c) 2012 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#include "chrome/common/extensions/api/extension_api_feature.h" |
+ |
+#include "base/file_path.h" |
+#include "base/file_util.h" |
+#include "base/json/json_reader.h" |
+#include "base/path_service.h" |
+#include "chrome/common/chrome_paths.h" |
+#include "testing/gtest/include/gtest/gtest.h" |
+ |
+namespace extensions { |
+ |
+TEST(ExtensionAPIFeature, Basics) { |
+ FilePath value_path; |
+ PathService::Get(chrome::DIR_TEST_DATA, &value_path); |
+ value_path = value_path.AppendASCII("extensions") |
+ .AppendASCII("extension_api_feature_unittest") |
+ .AppendASCII("test1.json"); |
+ |
+ std::string value_str; |
+ ASSERT_TRUE(file_util::ReadFileToString(value_path, &value_str)); |
+ |
+ scoped_ptr<DictionaryValue> value; |
+ { |
+ const bool kAllowTrailingComma = false; |
+ Value* temp = base::JSONReader::Read(value_str, kAllowTrailingComma); |
+ CHECK(temp); |
+ CHECK(temp->IsType(Value::TYPE_DICTIONARY)); |
+ value.reset(static_cast<DictionaryValue*>(temp)); |
+ } |
+ |
+ ExtensionAPIFeature feature; |
+ feature.set_name("parent"); |
+ feature.Parse(value.get()); |
+ |
+ EXPECT_EQ(1u, feature.extension_types()->size()); |
+ EXPECT_EQ(1u, feature.extension_types()->count(Extension::TYPE_EXTENSION)); |
+ EXPECT_EQ(1u, feature.contexts()->size()); |
+ EXPECT_EQ(1u, feature.contexts()->count(Feature::BLESSED_EXTENSION_CONTEXT)); |
+ |
+ ExtensionAPIFeature* child_function = static_cast<ExtensionAPIFeature*>( |
+ feature.GetChild("unknown")); |
+ EXPECT_FALSE(child_function); |
+ child_function = static_cast<ExtensionAPIFeature*>( |
+ feature.GetChild("function")); |
+ EXPECT_TRUE(child_function); |
+ EXPECT_EQ(1u, child_function->dependencies()->size()); |
+ EXPECT_EQ(1u, child_function->dependencies()->count("api:parent")); |
+ EXPECT_EQ(1u, child_function->extension_types()->size()); |
+ EXPECT_EQ(1u, child_function->extension_types()->count( |
+ Extension::TYPE_PACKAGED_APP)); |
+ |
+ child_function = static_cast<ExtensionAPIFeature*>(feature.GetChild("event")); |
+ EXPECT_TRUE(child_function); |
+ EXPECT_EQ(2u, child_function->dependencies()->size()); |
+ EXPECT_EQ(1u, child_function->dependencies()->count("api:parent")); |
+ EXPECT_EQ(1u, child_function->dependencies()->count("permission:whatever")); |
+ EXPECT_EQ(0u, child_function->extension_types()->size()); |
+ EXPECT_EQ(1u, child_function->contexts()->size()); |
+ EXPECT_EQ(1u, child_function->contexts()->count( |
+ Feature::UNBLESSED_EXTENSION_CONTEXT)); |
+} |
+ |
+} // namespace extensions |