| Index: chrome/browser/plugin_exceptions_table_model.cc
|
| ===================================================================
|
| --- chrome/browser/plugin_exceptions_table_model.cc (revision 102144)
|
| +++ chrome/browser/plugin_exceptions_table_model.cc (working copy)
|
| @@ -1,200 +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 "chrome/browser/plugin_exceptions_table_model.h"
|
| -
|
| -#include "base/auto_reset.h"
|
| -#include "base/sys_string_conversions.h"
|
| -#include "base/utf_string_conversions.h"
|
| -#include "chrome/common/chrome_notification_types.h"
|
| -#include "content/common/notification_service.h"
|
| -#include "grit/generated_resources.h"
|
| -#include "ui/base/l10n/l10n_util.h"
|
| -#include "ui/base/models/table_model_observer.h"
|
| -
|
| -PluginExceptionsTableModel::PluginExceptionsTableModel(
|
| - HostContentSettingsMap* content_settings_map,
|
| - HostContentSettingsMap* otr_content_settings_map)
|
| - : map_(content_settings_map),
|
| - otr_map_(otr_content_settings_map),
|
| - updates_disabled_(false),
|
| - observer_(NULL) {
|
| - registrar_.Add(this, chrome::NOTIFICATION_CONTENT_SETTINGS_CHANGED,
|
| - Source<HostContentSettingsMap>(map_));
|
| - if (otr_map_) {
|
| - registrar_.Add(this, chrome::NOTIFICATION_CONTENT_SETTINGS_CHANGED,
|
| - Source<HostContentSettingsMap>(otr_map_));
|
| - }
|
| -}
|
| -
|
| -PluginExceptionsTableModel::~PluginExceptionsTableModel() {
|
| -}
|
| -
|
| -bool PluginExceptionsTableModel::CanRemoveRows(const Rows& rows) const {
|
| - return !rows.empty();
|
| -}
|
| -
|
| -void PluginExceptionsTableModel::RemoveRows(const Rows& rows) {
|
| - AutoReset<bool> tmp(&updates_disabled_, true);
|
| - bool reload_all = false;
|
| - // Iterate over the rows starting with the highest ones so we can delete
|
| - // entries from |settings_| without the other indices shifting.
|
| - for (Rows::const_reverse_iterator it = rows.rbegin();
|
| - it != rows.rend(); ++it) {
|
| - DCHECK_LT(*it, settings_.size());
|
| - SettingsEntry entry = settings_[*it];
|
| - HostContentSettingsMap* map = entry.is_otr ? otr_map_ : map_;
|
| - map->SetContentSetting(entry.pattern,
|
| - ContentSettingsPattern::Wildcard(),
|
| - CONTENT_SETTINGS_TYPE_PLUGINS,
|
| - resources_[entry.plugin_id],
|
| - CONTENT_SETTING_DEFAULT);
|
| - settings_.erase(settings_.begin() + *it);
|
| - row_counts_[entry.plugin_id]--;
|
| - if (!reload_all) {
|
| - // If we remove the last exception for a plugin, recreate all groups
|
| - // to get correct IDs.
|
| - if (row_counts_[entry.plugin_id] == 0) {
|
| - reload_all = true;
|
| - } else {
|
| - if (observer_)
|
| - observer_->OnItemsRemoved(*it, 1);
|
| - }
|
| - }
|
| - }
|
| - if (reload_all) {
|
| - // This also notifies the observer.
|
| - ReloadSettings();
|
| - }
|
| -}
|
| -
|
| -void PluginExceptionsTableModel::RemoveAll() {
|
| - AutoReset<bool> tmp(&updates_disabled_, true);
|
| - map_->ClearSettingsForOneType(CONTENT_SETTINGS_TYPE_PLUGINS);
|
| - if (otr_map_)
|
| - otr_map_->ClearSettingsForOneType(CONTENT_SETTINGS_TYPE_PLUGINS);
|
| -
|
| - ClearSettings();
|
| - if (observer_)
|
| - observer_->OnModelChanged();
|
| -}
|
| -
|
| -int PluginExceptionsTableModel::RowCount() {
|
| - return settings_.size();
|
| -}
|
| -
|
| -string16 PluginExceptionsTableModel::GetText(int row, int column_id) {
|
| - DCHECK_GE(row, 0);
|
| - DCHECK_LT(row, static_cast<int>(settings_.size()));
|
| - SettingsEntry& entry = settings_[row];
|
| - if (column_id == IDS_EXCEPTIONS_PATTERN_HEADER ||
|
| - column_id == IDS_EXCEPTIONS_HOSTNAME_HEADER) {
|
| - return UTF8ToUTF16(entry.pattern.ToString());
|
| - } else if (column_id == IDS_EXCEPTIONS_ACTION_HEADER) {
|
| - switch (entry.setting) {
|
| - case CONTENT_SETTING_ALLOW:
|
| - return l10n_util::GetStringUTF16(IDS_EXCEPTIONS_ALLOW_BUTTON);
|
| - case CONTENT_SETTING_BLOCK:
|
| - return l10n_util::GetStringUTF16(IDS_EXCEPTIONS_BLOCK_BUTTON);
|
| - default:
|
| - NOTREACHED();
|
| - }
|
| - } else {
|
| - NOTREACHED();
|
| - }
|
| - return string16();
|
| -}
|
| -
|
| -bool PluginExceptionsTableModel::HasGroups() {
|
| - return true;
|
| -}
|
| -
|
| -void PluginExceptionsTableModel::SetObserver(ui::TableModelObserver* observer) {
|
| - observer_ = observer;
|
| -}
|
| -
|
| -ui::TableModel::Groups PluginExceptionsTableModel::GetGroups() {
|
| - return groups_;
|
| -}
|
| -
|
| -int PluginExceptionsTableModel::GetGroupID(int row) {
|
| - DCHECK_LT(row, static_cast<int>(settings_.size()));
|
| - return settings_[row].plugin_id;
|
| -}
|
| -
|
| -void PluginExceptionsTableModel::Observe(int type,
|
| - const NotificationSource& source,
|
| - const NotificationDetails& details) {
|
| - if (!updates_disabled_)
|
| - ReloadSettings();
|
| -}
|
| -
|
| -void PluginExceptionsTableModel::ClearSettings() {
|
| - settings_.clear();
|
| - groups_.clear();
|
| - row_counts_.clear();
|
| - resources_.clear();
|
| -}
|
| -
|
| -void PluginExceptionsTableModel::GetPlugins(
|
| - std::vector<webkit::npapi::PluginGroup>* plugin_groups) {
|
| - webkit::npapi::PluginList::Singleton()->GetPluginGroups(false, plugin_groups);
|
| -}
|
| -
|
| -void PluginExceptionsTableModel::LoadSettings() {
|
| - int group_id = 0;
|
| - std::vector<webkit::npapi::PluginGroup> plugins;
|
| - GetPlugins(&plugins);
|
| - for (size_t i = 0; i < plugins.size(); ++i) {
|
| - std::string plugin = plugins[i].identifier();
|
| - HostContentSettingsMap::SettingsForOneType settings;
|
| - map_->GetSettingsForOneType(CONTENT_SETTINGS_TYPE_PLUGINS,
|
| - plugin,
|
| - &settings);
|
| - HostContentSettingsMap::SettingsForOneType otr_settings;
|
| - if (otr_map_) {
|
| - otr_map_->GetSettingsForOneType(CONTENT_SETTINGS_TYPE_PLUGINS,
|
| - plugin,
|
| - &otr_settings);
|
| - }
|
| - string16 title = plugins[i].GetGroupName();
|
| - for (HostContentSettingsMap::SettingsForOneType::iterator setting_it =
|
| - settings.begin();
|
| - setting_it != settings.end(); ++setting_it) {
|
| - SettingsEntry entry = {
|
| - setting_it->a,
|
| - group_id,
|
| - setting_it->c,
|
| - false
|
| - };
|
| - settings_.push_back(entry);
|
| - }
|
| - for (HostContentSettingsMap::SettingsForOneType::iterator setting_it =
|
| - otr_settings.begin();
|
| - setting_it != otr_settings.end(); ++setting_it) {
|
| - SettingsEntry entry = {
|
| - setting_it->a,
|
| - group_id,
|
| - setting_it->c,
|
| - true
|
| - };
|
| - settings_.push_back(entry);
|
| - }
|
| - int num_plugins = settings.size() + otr_settings.size();
|
| - if (num_plugins > 0) {
|
| - Group group = { title, group_id++ };
|
| - groups_.push_back(group);
|
| - resources_.push_back(plugin);
|
| - row_counts_.push_back(num_plugins);
|
| - }
|
| - }
|
| -}
|
| -
|
| -void PluginExceptionsTableModel::ReloadSettings() {
|
| - ClearSettings();
|
| - LoadSettings();
|
| -
|
| - if (observer_)
|
| - observer_->OnModelChanged();
|
| -}
|
|
|