Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(90)

Unified Diff: chrome/browser/plugin_exceptions_table_model_unittest.cc

Issue 7977042: Get rid of synchronous calls to getting plugins to help with http://codereview.chromium.org/79800... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 9 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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);
-}
« no previous file with comments | « chrome/browser/plugin_exceptions_table_model.cc ('k') | chrome/browser/printing/print_preview_tab_controller.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698