Upstream version 8.37.186.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(), Manifest::INVALID_TYPE, manifest, "", &error);
29     return application;
30   }
31
32   const NavigationInfo* GetNavigationInfo(
33       scoped_refptr<ApplicationData> application) {
34     const NavigationInfo* info = static_cast<NavigationInfo*>(
35         application->GetManifestData(keys::kAllowNavigationKey));
36     return info;
37   }
38
39   base::DictionaryValue manifest;
40 };
41
42 TEST_F(NavigationHandlerTest, NoNavigation) {
43   scoped_refptr<ApplicationData> application = CreateApplication();
44   EXPECT_TRUE(application.get());
45   EXPECT_FALSE(GetNavigationInfo(application));
46 }
47
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);
54   EXPECT_TRUE(info);
55   const std::vector<std::string>& list = info->GetAllowedDomains();
56   EXPECT_TRUE(list.size() == 1 && list[0] == "http://www.sample.com");
57 }
58
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);
66   EXPECT_TRUE(info);
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");
71 }
72
73 }  // namespace application
74 }  // namespace xwalk