• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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/notification_exceptions_table_model.h"
6 
7 #include "base/utf_string_conversions.h"
8 #include "chrome/browser/notifications/desktop_notification_service_factory.h"
9 #include "chrome/test/testing_profile.h"
10 #include "content/browser/browser_thread.h"
11 #include "content/browser/renderer_host/test_render_view_host.h"
12 #include "grit/generated_resources.h"
13 #include "testing/gtest/include/gtest/gtest.h"
14 #include "ui/base/l10n/l10n_util.h"
15 
16 class NotificationExceptionsTableModelTest : public RenderViewHostTestHarness {
17  public:
NotificationExceptionsTableModelTest()18   NotificationExceptionsTableModelTest()
19      : ui_thread_(BrowserThread::UI, MessageLoop::current()) {
20   }
21 
~NotificationExceptionsTableModelTest()22   virtual ~NotificationExceptionsTableModelTest() {
23   }
24 
SetUp()25   virtual void SetUp() {
26     RenderViewHostTestHarness::SetUp();
27     service_ = DesktopNotificationServiceFactory::GetForProfile(profile());
28     ResetModel();
29   }
30 
TearDown()31   virtual void TearDown() {
32     model_.reset(NULL);
33     RenderViewHostTestHarness::TearDown();
34   }
35 
ResetModel()36   virtual void ResetModel() {
37     model_.reset(new NotificationExceptionsTableModel(service_));
38   }
39 
FillData()40   virtual void FillData() {
41     service_->GrantPermission(GURL("http://e-allowed2.com"));
42     service_->GrantPermission(GURL("http://allowed.com"));
43 
44     service_->DenyPermission(GURL("http://denied2.com"));
45     service_->DenyPermission(GURL("http://denied.com"));
46     service_->DenyPermission(GURL("http://f-denied3.com"));
47 
48     ResetModel();
49   }
50 
51  protected:
52   BrowserThread ui_thread_;
53   scoped_ptr<NotificationExceptionsTableModel> model_;
54   DesktopNotificationService* service_;
55 };
56 
TEST_F(NotificationExceptionsTableModelTest,CanCreate)57 TEST_F(NotificationExceptionsTableModelTest, CanCreate) {
58   EXPECT_EQ(0, model_->RowCount());
59 }
60 
TEST_F(NotificationExceptionsTableModelTest,RemoveAll)61 TEST_F(NotificationExceptionsTableModelTest, RemoveAll) {
62   FillData();
63   EXPECT_EQ(2u, service_->GetAllowedOrigins().size());
64   EXPECT_EQ(3u, service_->GetBlockedOrigins().size());
65   EXPECT_EQ(5, model_->RowCount());
66 
67   model_->RemoveAll();
68   EXPECT_EQ(0, model_->RowCount());
69 
70   EXPECT_EQ(0u, service_->GetAllowedOrigins().size());
71   EXPECT_EQ(0u, service_->GetBlockedOrigins().size());
72 }
73 
TEST_F(NotificationExceptionsTableModelTest,AlphabeticalOrder)74 TEST_F(NotificationExceptionsTableModelTest, AlphabeticalOrder) {
75   FillData();
76   EXPECT_EQ(5, model_->RowCount());
77 
78   EXPECT_EQ(ASCIIToUTF16("allowed.com"),
79             model_->GetText(0, IDS_EXCEPTIONS_HOSTNAME_HEADER));
80   EXPECT_EQ(l10n_util::GetStringUTF16(IDS_EXCEPTIONS_ALLOW_BUTTON),
81             model_->GetText(0, IDS_EXCEPTIONS_ACTION_HEADER));
82 
83   EXPECT_EQ(ASCIIToUTF16("denied.com"),
84             model_->GetText(1, IDS_EXCEPTIONS_HOSTNAME_HEADER));
85   EXPECT_EQ(l10n_util::GetStringUTF16(IDS_EXCEPTIONS_BLOCK_BUTTON),
86             model_->GetText(1, IDS_EXCEPTIONS_ACTION_HEADER));
87 
88   EXPECT_EQ(ASCIIToUTF16("denied2.com"),
89             model_->GetText(2, IDS_EXCEPTIONS_HOSTNAME_HEADER));
90   EXPECT_EQ(l10n_util::GetStringUTF16(IDS_EXCEPTIONS_BLOCK_BUTTON),
91             model_->GetText(2, IDS_EXCEPTIONS_ACTION_HEADER));
92 
93   EXPECT_EQ(ASCIIToUTF16("e-allowed2.com"),
94             model_->GetText(3, IDS_EXCEPTIONS_HOSTNAME_HEADER));
95   EXPECT_EQ(l10n_util::GetStringUTF16(IDS_EXCEPTIONS_ALLOW_BUTTON),
96             model_->GetText(3, IDS_EXCEPTIONS_ACTION_HEADER));
97 
98   EXPECT_EQ(ASCIIToUTF16("f-denied3.com"),
99             model_->GetText(4, IDS_EXCEPTIONS_HOSTNAME_HEADER));
100   EXPECT_EQ(l10n_util::GetStringUTF16(IDS_EXCEPTIONS_BLOCK_BUTTON),
101             model_->GetText(4, IDS_EXCEPTIONS_ACTION_HEADER));
102 }
103 
TEST_F(NotificationExceptionsTableModelTest,RemoveRows)104 TEST_F(NotificationExceptionsTableModelTest, RemoveRows) {
105   FillData();
106   EXPECT_EQ(5, model_->RowCount());
107 
108   {
109     RemoveRowsTableModel::Rows rows;
110     rows.insert(0);  // allowed.com
111     rows.insert(3);  // e-allowed2.com
112     model_->RemoveRows(rows);
113   }
114   EXPECT_EQ(3, model_->RowCount());
115   EXPECT_EQ(0u, service_->GetAllowedOrigins().size());
116   EXPECT_EQ(3u, service_->GetBlockedOrigins().size());
117 
118   {
119     RemoveRowsTableModel::Rows rows;
120     rows.insert(0);
121     rows.insert(1);
122     rows.insert(2);
123     model_->RemoveRows(rows);
124   }
125   EXPECT_EQ(0, model_->RowCount());
126   EXPECT_EQ(0u, service_->GetAllowedOrigins().size());
127   EXPECT_EQ(0u, service_->GetBlockedOrigins().size());
128 }
129