Index: chrome/browser/views/options/exceptions_view.cc |
diff --git a/chrome/browser/views/options/exceptions_view.cc b/chrome/browser/views/options/exceptions_view.cc |
index 8d7fc7614cb5e69a3f4b05fe3b484b255e2ed03c..eadaf75262c361ae6963f5cd70f450b865432c79 100644 |
--- a/chrome/browser/views/options/exceptions_view.cc |
+++ b/chrome/browser/views/options/exceptions_view.cc |
@@ -8,10 +8,12 @@ |
#include <vector> |
#include "app/l10n_util.h" |
+#include "chrome/browser/views/options/content_exceptions_table_view.h" |
#include "grit/generated_resources.h" |
#include "grit/locale_settings.h" |
#include "gfx/rect.h" |
#include "views/controls/button/native_button.h" |
+#include "views/controls/label.h" |
#include "views/controls/table/table_view.h" |
#include "views/grid_layout.h" |
#include "views/standard_layout.h" |
@@ -21,11 +23,14 @@ static const int kExceptionsViewInsetSize = 5; |
static ExceptionsView* instances[CONTENT_SETTINGS_NUM_TYPES] = { NULL }; |
// static |
-void ExceptionsView::ShowExceptionsWindow(gfx::NativeWindow parent, |
- HostContentSettingsMap* map, |
- ContentSettingsType content_type) { |
+void ExceptionsView::ShowExceptionsWindow( |
+ gfx::NativeWindow parent, |
+ HostContentSettingsMap* map, |
+ HostContentSettingsMap* off_the_record_map, |
+ ContentSettingsType content_type) { |
if (!instances[content_type]) { |
- instances[content_type] = new ExceptionsView(map, content_type); |
+ instances[content_type] = |
+ new ExceptionsView(map, off_the_record_map, content_type); |
views::Window::CreateChromeWindow(parent, gfx::Rect(), |
instances[content_type]); |
} |
@@ -125,20 +130,25 @@ std::wstring ExceptionsView::GetWindowTitle() const { |
void ExceptionsView::AcceptExceptionEdit( |
const HostContentSettingsMap::Pattern& pattern, |
ContentSetting setting, |
+ bool is_off_the_record, |
int index, |
bool is_new) { |
+ DCHECK(!is_off_the_record || allow_off_the_record_); |
+ |
if (!is_new) |
model_.RemoveException(index); |
- model_.AddException(pattern, setting); |
+ model_.AddException(pattern, setting, is_off_the_record); |
- int new_index = model_.IndexOfExceptionByPattern(pattern); |
+ int new_index = model_.IndexOfExceptionByPattern(pattern, is_off_the_record); |
DCHECK(new_index != -1); |
table_->Select(new_index); |
} |
ExceptionsView::ExceptionsView(HostContentSettingsMap* map, |
+ HostContentSettingsMap* off_the_record_map, |
ContentSettingsType type) |
- : model_(map, type), |
+ : model_(map, off_the_record_map, type), |
+ allow_off_the_record_(off_the_record_map != NULL), |
table_(NULL), |
add_button_(NULL), |
edit_button_(NULL), |
@@ -159,8 +169,7 @@ void ExceptionsView::Init() { |
columns.push_back( |
TableColumn(IDS_EXCEPTIONS_ACTION_HEADER, TableColumn::LEFT, -1, .25)); |
columns.back().sortable = true; |
- table_ = new views::TableView(&model_, columns, views::TEXT_ONLY, false, true, |
- false); |
+ table_ = new ContentExceptionsTableView(&model_, columns); |
views::TableView::SortDescriptors sort; |
sort.push_back( |
views::TableView::SortDescriptor(IDS_EXCEPTIONS_PATTERN_HEADER, true)); |
@@ -202,6 +211,15 @@ void ExceptionsView::Init() { |
layout->AddView(table_); |
layout->AddPaddingRow(0, kRelatedControlVerticalSpacing); |
+ if (allow_off_the_record_) { |
+ views::Label* label = new views::Label(l10n_util::GetString( |
+ IDS_EXCEPTIONS_OTR_IN_ITALICS)); |
+ label->SetHorizontalAlignment(views::Label::ALIGN_LEFT); |
+ layout->StartRow(0, single_column_layout_id); |
+ layout->AddView(label, 1, 1, GridLayout::LEADING, GridLayout::CENTER); |
+ layout->AddPaddingRow(0, kRelatedControlVerticalSpacing); |
+ } |
+ |
UpdateButtonState(); |
} |
@@ -215,9 +233,9 @@ void ExceptionsView::UpdateButtonState() { |
void ExceptionsView::Add() { |
ExceptionEditorView* view = |
- new ExceptionEditorView(this, &model_, -1, |
+ new ExceptionEditorView(this, &model_, allow_off_the_record_, -1, |
HostContentSettingsMap::Pattern(), |
- CONTENT_SETTING_BLOCK); |
+ CONTENT_SETTING_BLOCK, false); |
view->Show(window()->GetNativeWindow()); |
UpdateButtonState(); |
@@ -229,7 +247,9 @@ void ExceptionsView::Edit() { |
const HostContentSettingsMap::PatternSettingPair& entry = |
model_.entry_at(index); |
ExceptionEditorView* view = |
- new ExceptionEditorView(this, &model_, index, entry.first, entry.second); |
+ new ExceptionEditorView(this, &model_, allow_off_the_record_, index, |
+ entry.first, entry.second, |
+ model_.entry_is_off_the_record(index)); |
view->Show(window()->GetNativeWindow()); |
} |