Upstream version 10.39.233.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 "xwalk/application/common/manifest.h"
11 #include "testing/gtest/include/gtest/gtest.h"
12
13 namespace xwalk {
14
15 namespace keys = application_widget_keys;
16
17 namespace application {
18
19 class NavigationHandlerTest: public testing::Test {
20  public:
21   virtual void SetUp() OVERRIDE {
22     manifest.SetString(keys::kNameKey, "no name");
23     manifest.SetString(keys::kVersionKey, "0");
24   }
25
26   scoped_refptr<ApplicationData> CreateApplication() {
27     std::string error;
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()))),
31         &error);
32     return application;
33   }
34
35   const NavigationInfo* GetNavigationInfo(
36       scoped_refptr<ApplicationData> application) {
37     const NavigationInfo* info = static_cast<NavigationInfo*>(
38         application->GetManifestData(keys::kAllowNavigationKey));
39     return info;
40   }
41
42   base::DictionaryValue manifest;
43 };
44
45 TEST_F(NavigationHandlerTest, NoNavigation) {
46   scoped_refptr<ApplicationData> application = CreateApplication();
47   EXPECT_TRUE(application.get());
48   EXPECT_FALSE(GetNavigationInfo(application));
49 }
50
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);
57   EXPECT_TRUE(info);
58   const std::vector<std::string>& list = info->GetAllowedDomains();
59   EXPECT_TRUE(list.size() == 1 && list[0] == "http://www.sample.com");
60 }
61
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);
69   EXPECT_TRUE(info);
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");
74 }
75
76 }  // namespace application
77 }  // namespace xwalk