// Copyright (c) 2011 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #include "chrome/browser/notifications/notification_exceptions_table_model.h" #include "base/utf_string_conversions.h" #include "chrome/browser/notifications/desktop_notification_service_factory.h" #include "chrome/test/testing_profile.h" #include "content/browser/browser_thread.h" #include "content/browser/renderer_host/test_render_view_host.h" #include "grit/generated_resources.h" #include "testing/gtest/include/gtest/gtest.h" #include "ui/base/l10n/l10n_util.h" class NotificationExceptionsTableModelTest : public RenderViewHostTestHarness { public: NotificationExceptionsTableModelTest() : ui_thread_(BrowserThread::UI, MessageLoop::current()) { } virtual ~NotificationExceptionsTableModelTest() { } virtual void SetUp() { RenderViewHostTestHarness::SetUp(); service_ = DesktopNotificationServiceFactory::GetForProfile(profile()); ResetModel(); } virtual void TearDown() { model_.reset(NULL); RenderViewHostTestHarness::TearDown(); } virtual void ResetModel() { model_.reset(new NotificationExceptionsTableModel(service_)); } virtual void FillData() { service_->GrantPermission(GURL("http://e-allowed2.com")); service_->GrantPermission(GURL("http://allowed.com")); service_->DenyPermission(GURL("http://denied2.com")); service_->DenyPermission(GURL("http://denied.com")); service_->DenyPermission(GURL("http://f-denied3.com")); ResetModel(); } protected: BrowserThread ui_thread_; scoped_ptr<NotificationExceptionsTableModel> model_; DesktopNotificationService* service_; }; TEST_F(NotificationExceptionsTableModelTest, CanCreate) { EXPECT_EQ(0, model_->RowCount()); } TEST_F(NotificationExceptionsTableModelTest, RemoveAll) { FillData(); EXPECT_EQ(2u, service_->GetAllowedOrigins().size()); EXPECT_EQ(3u, service_->GetBlockedOrigins().size()); EXPECT_EQ(5, model_->RowCount()); model_->RemoveAll(); EXPECT_EQ(0, model_->RowCount()); EXPECT_EQ(0u, service_->GetAllowedOrigins().size()); EXPECT_EQ(0u, service_->GetBlockedOrigins().size()); } TEST_F(NotificationExceptionsTableModelTest, AlphabeticalOrder) { FillData(); EXPECT_EQ(5, model_->RowCount()); EXPECT_EQ(ASCIIToUTF16("allowed.com"), model_->GetText(0, IDS_EXCEPTIONS_HOSTNAME_HEADER)); EXPECT_EQ(l10n_util::GetStringUTF16(IDS_EXCEPTIONS_ALLOW_BUTTON), model_->GetText(0, IDS_EXCEPTIONS_ACTION_HEADER)); EXPECT_EQ(ASCIIToUTF16("denied.com"), model_->GetText(1, IDS_EXCEPTIONS_HOSTNAME_HEADER)); EXPECT_EQ(l10n_util::GetStringUTF16(IDS_EXCEPTIONS_BLOCK_BUTTON), model_->GetText(1, IDS_EXCEPTIONS_ACTION_HEADER)); EXPECT_EQ(ASCIIToUTF16("denied2.com"), model_->GetText(2, IDS_EXCEPTIONS_HOSTNAME_HEADER)); EXPECT_EQ(l10n_util::GetStringUTF16(IDS_EXCEPTIONS_BLOCK_BUTTON), model_->GetText(2, IDS_EXCEPTIONS_ACTION_HEADER)); EXPECT_EQ(ASCIIToUTF16("e-allowed2.com"), model_->GetText(3, IDS_EXCEPTIONS_HOSTNAME_HEADER)); EXPECT_EQ(l10n_util::GetStringUTF16(IDS_EXCEPTIONS_ALLOW_BUTTON), model_->GetText(3, IDS_EXCEPTIONS_ACTION_HEADER)); EXPECT_EQ(ASCIIToUTF16("f-denied3.com"), model_->GetText(4, IDS_EXCEPTIONS_HOSTNAME_HEADER)); EXPECT_EQ(l10n_util::GetStringUTF16(IDS_EXCEPTIONS_BLOCK_BUTTON), model_->GetText(4, IDS_EXCEPTIONS_ACTION_HEADER)); } TEST_F(NotificationExceptionsTableModelTest, RemoveRows) { FillData(); EXPECT_EQ(5, model_->RowCount()); { RemoveRowsTableModel::Rows rows; rows.insert(0); // allowed.com rows.insert(3); // e-allowed2.com model_->RemoveRows(rows); } EXPECT_EQ(3, model_->RowCount()); EXPECT_EQ(0u, service_->GetAllowedOrigins().size()); EXPECT_EQ(3u, service_->GetBlockedOrigins().size()); { RemoveRowsTableModel::Rows rows; rows.insert(0); rows.insert(1); rows.insert(2); model_->RemoveRows(rows); } EXPECT_EQ(0, model_->RowCount()); EXPECT_EQ(0u, service_->GetAllowedOrigins().size()); EXPECT_EQ(0u, service_->GetBlockedOrigins().size()); }