blob: 86b9ead276866cbf468ad1137d4ae14cbf52ac0c [file] [log] [blame]
[email protected]26193462012-01-05 10:36:551// 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
[email protected]0f5e57f52012-09-20 20:53:185#include "chrome/browser/plugins/plugin_finder.h"
[email protected]26193462012-01-05 10:36:556
7#include "base/values.h"
[email protected]de75c702012-09-25 23:06:028#include "chrome/browser/plugins/plugin_metadata.h"
[email protected]26193462012-01-05 10:36:559#include "testing/gtest/include/gtest/gtest.h"
[email protected]e5502142012-04-13 15:43:3310#include "webkit/plugins/npapi/plugin_list.h"
[email protected]26193462012-01-05 10:36:5511
12using base::DictionaryValue;
[email protected]97eddfe2013-02-12 19:16:3013using base::ListValue;
[email protected]e5502142012-04-13 15:43:3314using webkit::npapi::PluginList;
[email protected]26193462012-01-05 10:36:5515
16TEST(PluginFinderTest, JsonSyntax) {
[email protected]97eddfe2013-02-12 19:16:3017 scoped_ptr<DictionaryValue> plugin_list(
18 PluginFinder::LoadBuiltInPluginList());
[email protected]26193462012-01-05 10:36:5519 ASSERT_TRUE(plugin_list.get());
[email protected]97eddfe2013-02-12 19:16:3020 base::Value* version = NULL;
21 ASSERT_TRUE(plugin_list->Remove("x-version", &version));
22 EXPECT_EQ(base::Value::TYPE_INTEGER, version->GetType());
23
[email protected]79fa3362012-03-28 16:21:1124 for (DictionaryValue::Iterator plugin_it(*plugin_list);
[email protected]ee6ba60f2013-04-12 09:25:2325 !plugin_it.IsAtEnd(); plugin_it.Advance()) {
[email protected]26193462012-01-05 10:36:5526 const DictionaryValue* plugin = NULL;
[email protected]79fa3362012-03-28 16:21:1127 ASSERT_TRUE(plugin_it.value().GetAsDictionary(&plugin));
[email protected]26193462012-01-05 10:36:5528 std::string dummy_str;
[email protected]79fa3362012-03-28 16:21:1129 bool dummy_bool;
[email protected]dfdfeb72012-06-08 11:29:0230 if (plugin->HasKey("lang"))
31 EXPECT_TRUE(plugin->GetString("lang", &dummy_str));
32 if (plugin->HasKey("url"))
33 EXPECT_TRUE(plugin->GetString("url", &dummy_str));
[email protected]26193462012-01-05 10:36:5534 EXPECT_TRUE(plugin->GetString("name", &dummy_str));
[email protected]79fa3362012-03-28 16:21:1135 if (plugin->HasKey("help_url"))
36 EXPECT_TRUE(plugin->GetString("help_url", &dummy_str));
37 if (plugin->HasKey("displayurl"))
38 EXPECT_TRUE(plugin->GetBoolean("displayurl", &dummy_bool));
39 if (plugin->HasKey("requires_authorization"))
40 EXPECT_TRUE(plugin->GetBoolean("requires_authorization", &dummy_bool));
[email protected]a61890e2012-07-27 22:27:1141 const ListValue* mime_types = NULL;
[email protected]fa6ca6a2012-10-08 15:02:2042 if (plugin->GetList("mime_types", &mime_types)) {
43 for (ListValue::const_iterator mime_type_it = mime_types->begin();
44 mime_type_it != mime_types->end(); ++mime_type_it) {
45 EXPECT_TRUE((*mime_type_it)->GetAsString(&dummy_str));
46 }
[email protected]26193462012-01-05 10:36:5547 }
[email protected]fa6ca6a2012-10-08 15:02:2048
49 const ListValue* matching_mime_types = NULL;
50 if (plugin->GetList("matching_mime_types", &matching_mime_types)) {
51 for (ListValue::const_iterator it = matching_mime_types->begin();
52 it != matching_mime_types->end(); ++it) {
53 EXPECT_TRUE((*it)->GetAsString(&dummy_str));
54 }
55 }
56
[email protected]a61890e2012-07-27 22:27:1157 const ListValue* versions = NULL;
[email protected]9f230ed2012-05-24 11:19:4058 if (!plugin->GetList("versions", &versions))
[email protected]098f97c2012-05-23 17:33:5959 continue;
[email protected]9f230ed2012-05-24 11:19:4060
61 for (ListValue::const_iterator it = versions->begin();
62 it != versions->end(); ++it) {
63 DictionaryValue* version_dict = NULL;
64 ASSERT_TRUE((*it)->GetAsDictionary(&version_dict));
65 EXPECT_TRUE(version_dict->GetString("version", &dummy_str));
66 std::string status_str;
67 EXPECT_TRUE(version_dict->GetString("status", &status_str));
[email protected]de75c702012-09-25 23:06:0268 PluginMetadata::SecurityStatus status =
69 PluginMetadata::SECURITY_STATUS_UP_TO_DATE;
70 EXPECT_TRUE(PluginMetadata::ParseSecurityStatus(status_str, &status))
[email protected]9f230ed2012-05-24 11:19:4071 << "Invalid security status \"" << status_str << "\"";
72 }
[email protected]e5502142012-04-13 15:43:3373 }
74}