1 // Copyright (c) 2013 Intel Corporation. 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.
5 #include "xwalk/application/common/manifest_handlers/warp_handler.h"
7 #include "xwalk/application/common/application_manifest_constants.h"
8 #include "testing/gtest/include/gtest/gtest.h"
12 namespace keys = application_widget_keys;
14 namespace application {
16 class WARPHandlerTest: public testing::Test {
18 virtual void SetUp() OVERRIDE {
19 manifest.SetString(keys::kNameKey, "no name");
20 manifest.SetString(keys::kVersionKey, "0");
23 scoped_refptr<ApplicationData> CreateApplication() {
25 scoped_refptr<ApplicationData> application = ApplicationData::Create(
26 base::FilePath(), Manifest::INVALID_TYPE, manifest, "", &error);
30 const WARPInfo* GetWARPInfo(
31 scoped_refptr<ApplicationData> application) {
32 const WARPInfo* info = static_cast<WARPInfo*>(
33 application->GetManifestData(keys::kAccessKey));
37 base::DictionaryValue manifest;
40 // FIXME: the default WARP policy settings in WARP manifest handler
41 // are temporally removed, since they had affected some tests and legacy apps.
42 TEST_F(WARPHandlerTest, NoWARP) {
43 scoped_refptr<ApplicationData> application = CreateApplication();
44 EXPECT_TRUE(application.get());
45 EXPECT_FALSE(GetWARPInfo(application));
48 TEST_F(WARPHandlerTest, OneWARP) {
49 base::DictionaryValue* warp = new base::DictionaryValue;
50 warp->SetString(keys::kAccessOriginKey, "http://www.sample.com");
51 warp->SetBoolean(keys::kAccessSubdomainsKey, true);
52 manifest.Set(keys::kAccessKey, warp);
53 scoped_refptr<ApplicationData> application = CreateApplication();
54 EXPECT_TRUE(application.get());
55 EXPECT_EQ(application->GetPackageType(), Package::WGT);
56 const WARPInfo* info = GetWARPInfo(application);
58 scoped_ptr<base::ListValue> list(info->GetWARP()->DeepCopy());
59 base::DictionaryValue* new_warp;
60 list->GetDictionary(0, &new_warp);
61 EXPECT_TRUE(new_warp);
62 EXPECT_TRUE(warp->Equals(new_warp));
65 TEST_F(WARPHandlerTest, WARPs) {
66 base::DictionaryValue* warp1 = new base::DictionaryValue;
67 warp1->SetString(keys::kAccessOriginKey, "http://www.sample1.com");
68 warp1->SetBoolean(keys::kAccessSubdomainsKey, true);
69 base::DictionaryValue* warp2 = new base::DictionaryValue;
70 warp2->SetString(keys::kAccessOriginKey, "http://www.sample2.com");
71 warp2->SetBoolean(keys::kAccessSubdomainsKey, false);
72 base::ListValue* warp_list = new base::ListValue;
73 warp_list->Append(warp1);
74 warp_list->Append(warp2);
75 manifest.Set(keys::kAccessKey, warp_list);
77 scoped_refptr<ApplicationData> application = CreateApplication();
78 EXPECT_TRUE(application.get());
79 EXPECT_EQ(application->GetPackageType(), Package::WGT);
81 const WARPInfo* info = GetWARPInfo(application);
84 scoped_ptr<base::ListValue> list(info->GetWARP()->DeepCopy());
86 base::DictionaryValue* new_warp1;
87 list->GetDictionary(0, &new_warp1);
88 EXPECT_TRUE(new_warp1);
89 base::DictionaryValue* new_warp2;
90 list->GetDictionary(1, &new_warp2);
91 EXPECT_TRUE(new_warp2);
93 EXPECT_TRUE(warp1->Equals(new_warp1));
94 EXPECT_TRUE(warp2->Equals(new_warp2));
97 } // namespace application