| Index: chrome/browser/plugin_exceptions_table_model_unittest.cc
|
| ===================================================================
|
| --- chrome/browser/plugin_exceptions_table_model_unittest.cc (revision 102144)
|
| +++ chrome/browser/plugin_exceptions_table_model_unittest.cc (working copy)
|
| @@ -1,220 +0,0 @@
|
| -// 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 "base/auto_reset.h"
|
| -#include "base/command_line.h"
|
| -#include "base/utf_string_conversions.h"
|
| -#include "chrome/browser/mock_plugin_exceptions_table_model.h"
|
| -#include "chrome/common/chrome_switches.h"
|
| -#include "chrome/test/base/testing_pref_service.h"
|
| -#include "chrome/test/base/testing_profile.h"
|
| -#include "testing/gmock/include/gmock/gmock.h"
|
| -#include "testing/gtest/include/gtest/gtest.h"
|
| -#include "ui/base/models/table_model_observer.h"
|
| -#include "webkit/plugins/npapi/plugin_group.h"
|
| -#include "webkit/plugins/webplugininfo.h"
|
| -
|
| -// Can't be an internal namespace because PluginExceptionsTableModel declares
|
| -// as a friend.
|
| -namespace plugin_test_internal {
|
| -
|
| -using ::testing::_;
|
| -using ::testing::Invoke;
|
| -
|
| -class MockTableModelObserver : public ui::TableModelObserver {
|
| - public:
|
| - explicit MockTableModelObserver(ui::TableModel* model)
|
| - : model_(model) {
|
| - ON_CALL(*this, OnItemsRemoved(_, _))
|
| - .WillByDefault(
|
| - Invoke(this, &MockTableModelObserver::CheckOnItemsRemoved));
|
| - }
|
| -
|
| - MOCK_METHOD0(OnModelChanged, void());
|
| - MOCK_METHOD2(OnItemsChanged, void(int start, int length));
|
| - MOCK_METHOD2(OnItemsAdded, void(int start, int length));
|
| - MOCK_METHOD2(OnItemsRemoved, void(int start, int length));
|
| -
|
| - private:
|
| - void CheckOnItemsRemoved(int start, int length) {
|
| - if (!model_)
|
| - return;
|
| - // This method is called *after* the items have been removed, so we check if
|
| - // the first removed item was still inside the correct range.
|
| - EXPECT_LT(start, model_->RowCount() + 1);
|
| - }
|
| -
|
| - ui::TableModel* model_;
|
| -};
|
| -
|
| -} // namespace plugin_test_internal
|
| -
|
| -using ::testing::InSequence;
|
| -
|
| -class PluginExceptionsTableModelTest : public testing::Test {
|
| - public:
|
| - PluginExceptionsTableModelTest()
|
| - : ui_thread_(BrowserThread::UI, &message_loop_),
|
| - command_line_(CommandLine::ForCurrentProcess(),
|
| - *CommandLine::ForCurrentProcess()) {}
|
| -
|
| - virtual void SetUp() {
|
| - CommandLine::ForCurrentProcess()->AppendSwitch(
|
| - switches::kEnableResourceContentSettings);
|
| -
|
| - profile_.reset(new TestingProfile());
|
| -
|
| - HostContentSettingsMap* map = profile_->GetHostContentSettingsMap();
|
| -
|
| - ContentSettingsPattern example_com =
|
| - ContentSettingsPattern::FromString("[*.]example.com");
|
| - ContentSettingsPattern moose_org =
|
| - ContentSettingsPattern::FromString("[*.]moose.org");
|
| - map->SetContentSetting(example_com,
|
| - ContentSettingsPattern::Wildcard(),
|
| - CONTENT_SETTINGS_TYPE_PLUGINS,
|
| - "a-foo",
|
| - CONTENT_SETTING_ALLOW);
|
| - map->SetContentSetting(moose_org,
|
| - ContentSettingsPattern::Wildcard(),
|
| - CONTENT_SETTINGS_TYPE_PLUGINS,
|
| - "b-bar",
|
| - CONTENT_SETTING_BLOCK);
|
| - map->SetContentSetting(example_com,
|
| - ContentSettingsPattern::Wildcard(),
|
| - CONTENT_SETTINGS_TYPE_PLUGINS,
|
| - "b-bar",
|
| - CONTENT_SETTING_ALLOW);
|
| -
|
| - table_model_.reset(new MockPluginExceptionsTableModel(map, NULL));
|
| -
|
| - std::vector<webkit::npapi::PluginGroup> plugins;
|
| - webkit::WebPluginInfo foo_plugin;
|
| - foo_plugin.path = FilePath(FILE_PATH_LITERAL("a-foo"));
|
| - foo_plugin.name = ASCIIToUTF16("FooPlugin");
|
| - scoped_ptr<webkit::npapi::PluginGroup> foo_group(
|
| - webkit::npapi::PluginGroup::FromWebPluginInfo(foo_plugin));
|
| - plugins.push_back(*foo_group);
|
| -
|
| - webkit::WebPluginInfo bar_plugin;
|
| - bar_plugin.path = FilePath(FILE_PATH_LITERAL("b-bar"));
|
| - bar_plugin.name = ASCIIToUTF16("BarPlugin");
|
| - scoped_ptr<webkit::npapi::PluginGroup> bar_group(
|
| - webkit::npapi::PluginGroup::FromWebPluginInfo(bar_plugin));
|
| - plugins.push_back(*bar_group);
|
| -
|
| - table_model_->set_plugins(plugins);
|
| - table_model_->ReloadSettings();
|
| - }
|
| -
|
| - protected:
|
| - void CheckInvariants() const {
|
| - typedef std::vector<PluginExceptionsTableModel::SettingsEntry> Entries;
|
| - const Entries& settings = table_model_->settings_;
|
| - const std::vector<int>& row_counts = table_model_->row_counts_;
|
| - const std::vector<std::string>& resources = table_model_->resources_;
|
| - const ui::TableModel::Groups& groups = table_model_->groups_;
|
| -
|
| - EXPECT_EQ(groups.size(), row_counts.size());
|
| - EXPECT_EQ(groups.size(), resources.size());
|
| -
|
| - int last_plugin = 0;
|
| - int count = 0;
|
| - for (Entries::const_iterator it = settings.begin();
|
| - it != settings.end(); ++it) {
|
| - // Plugin IDs are indices into |groups|.
|
| - EXPECT_GE(it->plugin_id, 0);
|
| - EXPECT_LT(it->plugin_id, static_cast<int>(groups.size()));
|
| - if (it->plugin_id == last_plugin) {
|
| - count++;
|
| - } else {
|
| - // Plugin IDs are ascending one by one.
|
| - EXPECT_EQ(last_plugin+1, it->plugin_id);
|
| -
|
| - // Consecutive runs of plugins with id |x| are |row_counts[x]| long.
|
| - EXPECT_EQ(count, row_counts[last_plugin]);
|
| - count = 1;
|
| - last_plugin = it->plugin_id;
|
| - }
|
| - }
|
| - if (!row_counts.empty())
|
| - EXPECT_EQ(count, row_counts[last_plugin]);
|
| - }
|
| -
|
| - protected:
|
| - MessageLoop message_loop_;
|
| - BrowserThread ui_thread_;
|
| -
|
| - scoped_ptr<TestingProfile> profile_;
|
| - scoped_ptr<MockPluginExceptionsTableModel> table_model_;
|
| -
|
| - private:
|
| - AutoReset<CommandLine> command_line_;
|
| -};
|
| -
|
| -TEST_F(PluginExceptionsTableModelTest, Basic) {
|
| - EXPECT_EQ(3, table_model_->RowCount());
|
| - CheckInvariants();
|
| -}
|
| -
|
| -TEST_F(PluginExceptionsTableModelTest, RemoveOneRow) {
|
| - plugin_test_internal::MockTableModelObserver observer(table_model_.get());
|
| - table_model_->SetObserver(&observer);
|
| -
|
| - EXPECT_CALL(observer, OnItemsRemoved(1, 1));
|
| - RemoveRowsTableModel::Rows rows;
|
| - rows.insert(1);
|
| - table_model_->RemoveRows(rows);
|
| - EXPECT_EQ(2, table_model_->RowCount());
|
| - EXPECT_EQ(2, static_cast<int>(table_model_->GetGroups().size()));
|
| - CheckInvariants();
|
| - table_model_->SetObserver(NULL);
|
| -}
|
| -
|
| -TEST_F(PluginExceptionsTableModelTest, RemoveLastRowInGroup) {
|
| - plugin_test_internal::MockTableModelObserver observer(table_model_.get());
|
| - table_model_->SetObserver(&observer);
|
| -
|
| - EXPECT_CALL(observer, OnModelChanged());
|
| - RemoveRowsTableModel::Rows rows;
|
| - rows.insert(0);
|
| - table_model_->RemoveRows(rows);
|
| - EXPECT_EQ(2, table_model_->RowCount());
|
| - EXPECT_EQ(1, static_cast<int>(table_model_->GetGroups().size()));
|
| - CheckInvariants();
|
| -
|
| - HostContentSettingsMap* map = profile_->GetHostContentSettingsMap();
|
| - EXPECT_CALL(observer, OnModelChanged());
|
| - map->SetContentSetting(ContentSettingsPattern::FromString("[*.]blurp.net"),
|
| - ContentSettingsPattern::Wildcard(),
|
| - CONTENT_SETTINGS_TYPE_PLUGINS,
|
| - "b-bar",
|
| - CONTENT_SETTING_BLOCK);
|
| - EXPECT_EQ(3, table_model_->RowCount());
|
| -
|
| - InSequence s;
|
| - EXPECT_CALL(observer, OnItemsRemoved(2, 1));
|
| - EXPECT_CALL(observer, OnItemsRemoved(0, 1));
|
| - rows.clear();
|
| - rows.insert(0);
|
| - rows.insert(2);
|
| - table_model_->RemoveRows(rows);
|
| - EXPECT_EQ(1, table_model_->RowCount());
|
| - EXPECT_EQ(1, static_cast<int>(table_model_->GetGroups().size()));
|
| - CheckInvariants();
|
| -
|
| - table_model_->SetObserver(NULL);
|
| -}
|
| -
|
| -TEST_F(PluginExceptionsTableModelTest, RemoveAllRows) {
|
| - plugin_test_internal::MockTableModelObserver observer(table_model_.get());
|
| - table_model_->SetObserver(&observer);
|
| -
|
| - EXPECT_CALL(observer, OnModelChanged());
|
| - table_model_->RemoveAll();
|
| - EXPECT_EQ(0, table_model_->RowCount());
|
| - EXPECT_EQ(0, static_cast<int>(table_model_->GetGroups().size()));
|
| - CheckInvariants();
|
| - table_model_->SetObserver(NULL);
|
| -}
|
|
|