1 // Copyright (c) 2014 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/navigation_handler.h"
9 #include "xwalk/application/common/application_manifest_constants.h"
10 #include "testing/gtest/include/gtest/gtest.h"
14 namespace keys = application_widget_keys;
16 namespace application {
18 class NavigationHandlerTest: public testing::Test {
20 virtual void SetUp() OVERRIDE {
21 manifest.SetString(keys::kNameKey, "no name");
22 manifest.SetString(keys::kXWalkVersionKey, "0");
25 scoped_refptr<ApplicationData> CreateApplication() {
27 scoped_refptr<ApplicationData> application = ApplicationData::Create(
28 base::FilePath(), Manifest::INVALID_TYPE, manifest, "", &error);
32 const NavigationInfo* GetNavigationInfo(
33 scoped_refptr<ApplicationData> application) {
34 const NavigationInfo* info = static_cast<NavigationInfo*>(
35 application->GetManifestData(keys::kAllowNavigationKey));
39 base::DictionaryValue manifest;
42 TEST_F(NavigationHandlerTest, NoNavigation) {
43 scoped_refptr<ApplicationData> application = CreateApplication();
44 EXPECT_TRUE(application.get());
45 EXPECT_FALSE(GetNavigationInfo(application));
48 TEST_F(NavigationHandlerTest, OneNavigation) {
49 manifest.SetString(keys::kAllowNavigationKey, "http://www.sample.com");
50 scoped_refptr<ApplicationData> application = CreateApplication();
51 EXPECT_TRUE(application.get());
52 EXPECT_EQ(application->GetPackageType(), Manifest::TYPE_WGT);
53 const NavigationInfo* info = GetNavigationInfo(application);
55 const std::vector<std::string>& list = info->GetAllowedDomains();
56 EXPECT_TRUE(list.size() == 1 && list[0] == "http://www.sample.com");
59 TEST_F(NavigationHandlerTest, Navigations) {
60 manifest.SetString(keys::kAllowNavigationKey,
61 "http://www.sample1.com www.sample2.com");
62 scoped_refptr<ApplicationData> application = CreateApplication();
63 EXPECT_TRUE(application.get());
64 EXPECT_EQ(application->GetPackageType(), Manifest::TYPE_WGT);
65 const NavigationInfo* info = GetNavigationInfo(application);
67 const std::vector<std::string>& list = info->GetAllowedDomains();
68 EXPECT_TRUE(list.size() == 2 &&
69 list[0] == "http://www.sample1.com" &&
70 list[1] == "www.sample2.com");
73 } // namespace application