Upstream version 9.38.204.0
[platform/framework/web/crosswalk.git] / src / xwalk / application / common / manifest_handlers / navigation_handler_unittest.cc
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.
4
5 #include "xwalk/application/common/manifest_handlers/navigation_handler.h"
6
7 #include <string>
8 #include <vector>
9 #include "xwalk/application/common/application_manifest_constants.h"
10 #include "testing/gtest/include/gtest/gtest.h"
11
12 namespace xwalk {
13
14 namespace keys = application_widget_keys;
15
16 namespace application {
17
18 class NavigationHandlerTest: public testing::Test {
19  public:
20   virtual void SetUp() OVERRIDE {
21     manifest.SetString(keys::kNameKey, "no name");
22     manifest.SetString(keys::kXWalkVersionKey, "0");
23   }
24
25   scoped_refptr<ApplicationData> CreateApplication() {
26     std::string error;
27     scoped_refptr<ApplicationData> application = ApplicationData::Create(
28         base::FilePath(), ApplicationData::LOCAL_DIRECTORY,
29         manifest, "", &error);
30     return application;
31   }
32
33   const NavigationInfo* GetNavigationInfo(
34       scoped_refptr<ApplicationData> application) {
35     const NavigationInfo* info = static_cast<NavigationInfo*>(
36         application->GetManifestData(keys::kAllowNavigationKey));
37     return info;
38   }
39
40   base::DictionaryValue manifest;
41 };
42
43 TEST_F(NavigationHandlerTest, NoNavigation) {
44   scoped_refptr<ApplicationData> application = CreateApplication();
45   EXPECT_TRUE(application.get());
46   EXPECT_FALSE(GetNavigationInfo(application));
47 }
48
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);
55   EXPECT_TRUE(info);
56   const std::vector<std::string>& list = info->GetAllowedDomains();
57   EXPECT_TRUE(list.size() == 1 && list[0] == "http://www.sample.com");
58 }
59
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);
67   EXPECT_TRUE(info);
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");
72 }
73
74 }  // namespace application
75 }  // namespace xwalk