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(), ApplicationData::LOCAL_DIRECTORY,
29 manifest, "", &error);
33 const NavigationInfo* GetNavigationInfo(
34 scoped_refptr<ApplicationData> application) {
35 const NavigationInfo* info = static_cast<NavigationInfo*>(
36 application->GetManifestData(keys::kAllowNavigationKey));
40 base::DictionaryValue manifest;
43 TEST_F(NavigationHandlerTest, NoNavigation) {
44 scoped_refptr<ApplicationData> application = CreateApplication();
45 EXPECT_TRUE(application.get());
46 EXPECT_FALSE(GetNavigationInfo(application));
49 TEST_F(NavigationHandlerTest, OneNavigation) {
50 manifest.SetString(keys::kAllowNavigationKey, "http://www.sample.com");
51 scoped_refptr<ApplicationData> application = CreateApplication();
52 EXPECT_TRUE(application.get());
53 EXPECT_EQ(application->GetPackageType(), Manifest::TYPE_WGT);
54 const NavigationInfo* info = GetNavigationInfo(application);
56 const std::vector<std::string>& list = info->GetAllowedDomains();
57 EXPECT_TRUE(list.size() == 1 && list[0] == "http://www.sample.com");
60 TEST_F(NavigationHandlerTest, Navigations) {
61 manifest.SetString(keys::kAllowNavigationKey,
62 "http://www.sample1.com www.sample2.com");
63 scoped_refptr<ApplicationData> application = CreateApplication();
64 EXPECT_TRUE(application.get());
65 EXPECT_EQ(application->GetPackageType(), Manifest::TYPE_WGT);
66 const NavigationInfo* info = GetNavigationInfo(application);
68 const std::vector<std::string>& list = info->GetAllowedDomains();
69 EXPECT_TRUE(list.size() == 2 &&
70 list[0] == "http://www.sample1.com" &&
71 list[1] == "www.sample2.com");
74 } // namespace application