- add sources.
[platform/framework/web/crosswalk.git] / src / chrome / browser / notifications / desktop_notification_service_unittest.cc
1 // Copyright (c) 2011 The Chromium Authors. 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 "chrome/browser/notifications/desktop_notification_service.h"
6
7 #include "base/bind.h"
8 #include "base/memory/scoped_ptr.h"
9 #include "base/message_loop/message_loop.h"
10 #include "base/synchronization/waitable_event.h"
11 #include "chrome/browser/notifications/desktop_notification_service_factory.h"
12 #include "chrome/test/base/chrome_render_view_host_test_harness.h"
13 #include "chrome/test/base/testing_profile.h"
14 #include "content/public/test/test_browser_thread.h"
15 #include "testing/gtest/include/gtest/gtest.h"
16 #include "third_party/WebKit/public/web/WebNotificationPresenter.h"
17
18 class DesktopNotificationServiceTest : public ChromeRenderViewHostTestHarness {
19  protected:
20   virtual void SetUp() {
21     ChromeRenderViewHostTestHarness::SetUp();
22
23     // Creates the destop notification service.
24     service_ = DesktopNotificationServiceFactory::GetForProfile(profile());
25   }
26
27   DesktopNotificationService* service_;
28 };
29
30 TEST_F(DesktopNotificationServiceTest, SettingsForSchemes) {
31   GURL url("file:///html/test.html");
32
33   EXPECT_EQ(CONTENT_SETTING_ASK,
34             service_->GetDefaultContentSetting(NULL));
35   EXPECT_EQ(WebKit::WebNotificationPresenter::PermissionNotAllowed,
36             service_->HasPermission(url));
37
38   service_->GrantPermission(url);
39   EXPECT_EQ(WebKit::WebNotificationPresenter::PermissionAllowed,
40             service_->HasPermission(url));
41
42   service_->DenyPermission(url);
43   EXPECT_EQ(WebKit::WebNotificationPresenter::PermissionDenied,
44             service_->HasPermission(url));
45
46   GURL https_url("https://testurl");
47   GURL http_url("http://testurl");
48   EXPECT_EQ(CONTENT_SETTING_ASK,
49             service_->GetDefaultContentSetting(NULL));
50   EXPECT_EQ(WebKit::WebNotificationPresenter::PermissionNotAllowed,
51             service_->HasPermission(http_url));
52   EXPECT_EQ(WebKit::WebNotificationPresenter::PermissionNotAllowed,
53             service_->HasPermission(https_url));
54
55   service_->GrantPermission(https_url);
56   EXPECT_EQ(WebKit::WebNotificationPresenter::PermissionNotAllowed,
57             service_->HasPermission(http_url));
58   EXPECT_EQ(WebKit::WebNotificationPresenter::PermissionAllowed,
59             service_->HasPermission(https_url));
60
61   service_->DenyPermission(http_url);
62   EXPECT_EQ(WebKit::WebNotificationPresenter::PermissionDenied,
63             service_->HasPermission(http_url));
64   EXPECT_EQ(WebKit::WebNotificationPresenter::PermissionAllowed,
65             service_->HasPermission(https_url));
66 }
67
68 TEST_F(DesktopNotificationServiceTest, GetNotificationsSettings) {
69   service_->GrantPermission(GURL("http://allowed2.com"));
70   service_->GrantPermission(GURL("http://allowed.com"));
71   service_->DenyPermission(GURL("http://denied2.com"));
72   service_->DenyPermission(GURL("http://denied.com"));
73
74   ContentSettingsForOneType settings;
75   service_->GetNotificationsSettings(&settings);
76   // |settings| contains the default setting and 4 exceptions.
77   ASSERT_EQ(5u, settings.size());
78
79   EXPECT_EQ(ContentSettingsPattern::FromURLNoWildcard(
80                 GURL("http://allowed.com")),
81             settings[0].primary_pattern);
82   EXPECT_EQ(CONTENT_SETTING_ALLOW,
83             settings[0].setting);
84   EXPECT_EQ(ContentSettingsPattern::FromURLNoWildcard(
85                 GURL("http://allowed2.com")),
86             settings[1].primary_pattern);
87   EXPECT_EQ(CONTENT_SETTING_ALLOW,
88             settings[1].setting);
89   EXPECT_EQ(ContentSettingsPattern::FromURLNoWildcard(
90                 GURL("http://denied.com")),
91             settings[2].primary_pattern);
92   EXPECT_EQ(CONTENT_SETTING_BLOCK,
93             settings[2].setting);
94   EXPECT_EQ(ContentSettingsPattern::FromURLNoWildcard(
95                 GURL("http://denied2.com")),
96             settings[3].primary_pattern);
97   EXPECT_EQ(CONTENT_SETTING_BLOCK,
98             settings[3].setting);
99   EXPECT_EQ(ContentSettingsPattern::Wildcard(),
100             settings[4].primary_pattern);
101   EXPECT_EQ(CONTENT_SETTING_ASK,
102             settings[4].setting);
103 }