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(), ApplicationData::LOCAL_DIRECTORY,
27 manifest, "", &error);
31 const WARPInfo* GetWARPInfo(
32 scoped_refptr<ApplicationData> application) {
33 const WARPInfo* info = static_cast<WARPInfo*>(
34 application->GetManifestData(keys::kAccessKey));
38 base::DictionaryValue manifest;
41 // FIXME: the default WARP policy settings in WARP manifest handler
42 // are temporally removed, since they had affected some tests and legacy apps.
43 TEST_F(WARPHandlerTest, NoWARP) {
44 scoped_refptr<ApplicationData> application = CreateApplication();
45 EXPECT_TRUE(application.get());
46 EXPECT_FALSE(GetWARPInfo(application));
49 TEST_F(WARPHandlerTest, OneWARP) {
50 base::DictionaryValue* warp = new base::DictionaryValue;
51 warp->SetString(keys::kAccessOriginKey, "http://www.sample.com");
52 warp->SetBoolean(keys::kAccessSubdomainsKey, true);
53 manifest.Set(keys::kAccessKey, warp);
54 scoped_refptr<ApplicationData> application = CreateApplication();
55 EXPECT_TRUE(application.get());
56 EXPECT_EQ(application->GetPackageType(), Package::WGT);
57 const WARPInfo* info = GetWARPInfo(application);
59 scoped_ptr<base::ListValue> list(info->GetWARP()->DeepCopy());
60 base::DictionaryValue* new_warp;
61 list->GetDictionary(0, &new_warp);
62 EXPECT_TRUE(new_warp);
63 EXPECT_TRUE(warp->Equals(new_warp));
66 TEST_F(WARPHandlerTest, WARPs) {
67 base::DictionaryValue* warp1 = new base::DictionaryValue;
68 warp1->SetString(keys::kAccessOriginKey, "http://www.sample1.com");
69 warp1->SetBoolean(keys::kAccessSubdomainsKey, true);
70 base::DictionaryValue* warp2 = new base::DictionaryValue;
71 warp2->SetString(keys::kAccessOriginKey, "http://www.sample2.com");
72 warp2->SetBoolean(keys::kAccessSubdomainsKey, false);
73 base::ListValue* warp_list = new base::ListValue;
74 warp_list->Append(warp1);
75 warp_list->Append(warp2);
76 manifest.Set(keys::kAccessKey, warp_list);
78 scoped_refptr<ApplicationData> application = CreateApplication();
79 EXPECT_TRUE(application.get());
80 EXPECT_EQ(application->GetPackageType(), Package::WGT);
82 const WARPInfo* info = GetWARPInfo(application);
85 scoped_ptr<base::ListValue> list(info->GetWARP()->DeepCopy());
87 base::DictionaryValue* new_warp1;
88 list->GetDictionary(0, &new_warp1);
89 EXPECT_TRUE(new_warp1);
90 base::DictionaryValue* new_warp2;
91 list->GetDictionary(1, &new_warp2);
92 EXPECT_TRUE(new_warp2);
94 EXPECT_TRUE(warp1->Equals(new_warp1));
95 EXPECT_TRUE(warp2->Equals(new_warp2));
98 } // namespace application