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 "xwalk/application/common/manifest.h"
11 #include "testing/gtest/include/gtest/gtest.h"
15 namespace keys = application_widget_keys;
17 namespace application {
19 class NavigationHandlerTest: public testing::Test {
21 virtual void SetUp() OVERRIDE {
22 manifest.SetString(keys::kNameKey, "no name");
23 manifest.SetString(keys::kVersionKey, "0");
26 scoped_refptr<ApplicationData> CreateApplication() {
28 scoped_refptr<ApplicationData> application = ApplicationData::Create(
29 base::FilePath(), std::string(), ApplicationData::LOCAL_DIRECTORY,
30 make_scoped_ptr(new Manifest(make_scoped_ptr(manifest.DeepCopy()))),
35 const NavigationInfo* GetNavigationInfo(
36 scoped_refptr<ApplicationData> application) {
37 const NavigationInfo* info = static_cast<NavigationInfo*>(
38 application->GetManifestData(keys::kAllowNavigationKey));
42 base::DictionaryValue manifest;
45 TEST_F(NavigationHandlerTest, NoNavigation) {
46 scoped_refptr<ApplicationData> application = CreateApplication();
47 EXPECT_TRUE(application.get());
48 EXPECT_FALSE(GetNavigationInfo(application));
51 TEST_F(NavigationHandlerTest, OneNavigation) {
52 manifest.SetString(keys::kAllowNavigationKey, "http://www.sample.com");
53 scoped_refptr<ApplicationData> application = CreateApplication();
54 EXPECT_TRUE(application.get());
55 EXPECT_EQ(application->GetManifest()->type(), Manifest::TYPE_WIDGET);
56 const NavigationInfo* info = GetNavigationInfo(application);
58 const std::vector<std::string>& list = info->GetAllowedDomains();
59 EXPECT_TRUE(list.size() == 1 && list[0] == "http://www.sample.com");
62 TEST_F(NavigationHandlerTest, Navigations) {
63 manifest.SetString(keys::kAllowNavigationKey,
64 "http://www.sample1.com www.sample2.com");
65 scoped_refptr<ApplicationData> application = CreateApplication();
66 EXPECT_TRUE(application.get());
67 EXPECT_EQ(application->GetManifest()->type(), Manifest::TYPE_WIDGET);
68 const NavigationInfo* info = GetNavigationInfo(application);
70 const std::vector<std::string>& list = info->GetAllowedDomains();
71 EXPECT_TRUE(list.size() == 2 &&
72 list[0] == "http://www.sample1.com" &&
73 list[1] == "www.sample2.com");
76 } // namespace application