Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/browser/ui/views/website_settings/website_settings_popup_view.h " | 5 #include "chrome/browser/ui/views/website_settings/website_settings_popup_view.h " |
| 6 | 6 |
| 7 #include "base/string_number_conversions.h" | 7 #include "base/string_number_conversions.h" |
| 8 #include "base/utf_string_conversions.h" | 8 #include "base/utf_string_conversions.h" |
| 9 #include "chrome/browser/certificate_viewer.h" | 9 #include "chrome/browser/certificate_viewer.h" |
| 10 #include "chrome/browser/profiles/profile.h" | 10 #include "chrome/browser/profiles/profile.h" |
| (...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 127 | 127 |
| 128 private: | 128 private: |
| 129 // The label that displays the name of the site's identity. | 129 // The label that displays the name of the site's identity. |
| 130 views::Label* name_; | 130 views::Label* name_; |
| 131 // The label that displays the status of the identity check for this site. | 131 // The label that displays the status of the identity check for this site. |
| 132 views::Label* status_; | 132 views::Label* status_; |
| 133 | 133 |
| 134 DISALLOW_COPY_AND_ASSIGN(PopupHeaderView); | 134 DISALLOW_COPY_AND_ASSIGN(PopupHeaderView); |
| 135 }; | 135 }; |
| 136 | 136 |
| 137 // Website Settings are not supported for internal Chrome pages. Instead of the | |
| 138 // |WebsiteSettingsPopupView| the |WebsiteSettingsInternalPageView| is | |
| 139 // displayed. | |
| 140 class WebsiteSettingsInternalPageView : public views::BubbleDelegateView { | |
| 141 public: | |
| 142 explicit WebsiteSettingsInternalPageView(views::View* anchor_view); | |
| 143 virtual ~WebsiteSettingsInternalPageView(); | |
| 144 | |
| 145 // views::BubbleDelegate implementations. | |
| 146 virtual gfx::Rect GetAnchorRect() OVERRIDE; | |
|
tfarina
2012/08/08 02:32:46
nit: can this be private? please.
markusheintz_
2012/08/08 13:20:13
Done.
| |
| 147 | |
| 148 private: | |
| 149 DISALLOW_COPY_AND_ASSIGN(WebsiteSettingsInternalPageView); | |
| 150 }; | |
| 151 | |
| 137 //////////////////////////////////////////////////////////////////////////////// | 152 //////////////////////////////////////////////////////////////////////////////// |
| 138 // Popup Header | 153 // Popup Header |
| 139 //////////////////////////////////////////////////////////////////////////////// | 154 //////////////////////////////////////////////////////////////////////////////// |
| 140 | 155 |
| 141 PopupHeaderView::PopupHeaderView(views::ButtonListener* close_button_listener) | 156 PopupHeaderView::PopupHeaderView(views::ButtonListener* close_button_listener) |
| 142 : name_(NULL), status_(NULL) { | 157 : name_(NULL), status_(NULL) { |
| 143 views::GridLayout* layout = new views::GridLayout(this); | 158 views::GridLayout* layout = new views::GridLayout(this); |
| 144 SetLayoutManager(layout); | 159 SetLayoutManager(layout); |
| 145 | 160 |
| 146 const int label_column = 0; | 161 const int label_column = 0; |
| (...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 200 void PopupHeaderView::SetIdentityName(const string16& name) { | 215 void PopupHeaderView::SetIdentityName(const string16& name) { |
| 201 name_->SetText(name); | 216 name_->SetText(name); |
| 202 } | 217 } |
| 203 | 218 |
| 204 void PopupHeaderView::SetIdentityStatus(const string16& status, | 219 void PopupHeaderView::SetIdentityStatus(const string16& status, |
| 205 SkColor text_color) { | 220 SkColor text_color) { |
| 206 status_->SetText(status); | 221 status_->SetText(status); |
| 207 status_->SetEnabledColor(text_color); | 222 status_->SetEnabledColor(text_color); |
| 208 } | 223 } |
| 209 | 224 |
| 210 /////////////////////////////////////////////////////////////////////////////// | 225 //////////////////////////////////////////////////////////////////////////////// |
| 226 // WebsiteSettingsInternalPageView | |
| 227 //////////////////////////////////////////////////////////////////////////////// | |
| 228 | |
| 229 WebsiteSettingsInternalPageView::WebsiteSettingsInternalPageView( | |
| 230 views::View* anchor_view) | |
| 231 : BubbleDelegateView(anchor_view, views::BubbleBorder::TOP_LEFT) { | |
| 232 views::GridLayout* layout = new views::GridLayout(this); | |
|
msw
2012/08/07 22:21:49
GridLayout seems overkill here, please try a BoxLa
tfarina
2012/08/08 02:32:46
I don't like doing many things in constructors. Is
markusheintz_
2012/08/08 13:20:13
In general I agree with you. But in this particula
markusheintz_
2012/08/08 13:20:13
Done.
| |
| 233 SetLayoutManager(layout); | |
| 234 views::ColumnSet* column_set = layout->AddColumnSet(0); | |
| 235 column_set->AddColumn(views::GridLayout::FILL, | |
| 236 views::GridLayout::FILL, | |
| 237 0, // Resize weight. | |
| 238 views::GridLayout::USE_PREF, | |
| 239 0, | |
| 240 0); | |
| 241 column_set->AddPaddingColumn(0, kIconMarginLeft); | |
| 242 column_set->AddColumn(views::GridLayout::FILL, | |
| 243 views::GridLayout::FILL, | |
| 244 1, | |
| 245 views::GridLayout::USE_PREF, | |
| 246 0, | |
| 247 0); | |
| 248 | |
| 249 layout->StartRow(1, 0); | |
| 250 | |
| 251 ui::ResourceBundle& rb = ui::ResourceBundle::GetSharedInstance(); | |
| 252 const gfx::Image& icon = rb.GetNativeImageNamed(IDR_PRODUCT_LOGO_26); | |
| 253 views::ImageView* icon_view = new views::ImageView(); | |
| 254 icon_view->SetImage(icon.ToImageSkia()); | |
| 255 layout->AddView(icon_view, 1, 1, views::GridLayout::LEADING, | |
| 256 views::GridLayout::LEADING); | |
| 257 | |
| 258 string16 text = l10n_util::GetStringUTF16( | |
| 259 IDS_PAGE_INFO_INTERNAL_PAGE); | |
| 260 views::Label* label = new views::Label(text); | |
| 261 label->SetMultiLine(true); | |
| 262 label->SetAllowCharacterBreak(true); | |
| 263 label->SetHorizontalAlignment(views::Label::ALIGN_LEFT); | |
| 264 layout->AddView(label, 1, 1, views::GridLayout::LEADING, | |
| 265 views::GridLayout::CENTER); | |
| 266 | |
| 267 views::BubbleDelegateView::CreateBubble(this); | |
| 268 Show(); | |
| 269 SizeToContents(); | |
| 270 } | |
| 271 | |
| 272 WebsiteSettingsInternalPageView::~WebsiteSettingsInternalPageView() { | |
| 273 } | |
| 274 | |
| 275 gfx::Rect WebsiteSettingsInternalPageView::GetAnchorRect() { | |
| 276 // Compensate for some built-in padding in the icon. This will make the arrow | |
| 277 // point to the middle of the icon. | |
| 278 gfx::Rect anchor(BubbleDelegateView::GetAnchorRect()); | |
| 279 anchor.Inset(0, anchor_view() ? kLocationIconBottomMargin : 0); | |
| 280 return anchor; | |
| 281 } | |
| 282 | |
| 283 //////////////////////////////////////////////////////////////////////////////// | |
| 211 // WebsiteSettingsPopupView | 284 // WebsiteSettingsPopupView |
| 212 /////////////////////////////////////////////////////////////////////////////// | 285 //////////////////////////////////////////////////////////////////////////////// |
| 213 | 286 |
| 214 WebsiteSettingsPopupView::~WebsiteSettingsPopupView() { | 287 WebsiteSettingsPopupView::~WebsiteSettingsPopupView() { |
| 215 } | 288 } |
| 216 | 289 |
| 217 // static | 290 // static |
| 218 void WebsiteSettingsPopupView::ShowPopup(views::View* anchor_view, | 291 void WebsiteSettingsPopupView::ShowPopup(views::View* anchor_view, |
| 219 Profile* profile, | 292 Profile* profile, |
| 220 TabContents* tab_contents, | 293 TabContents* tab_contents, |
| 221 const GURL& url, | 294 const GURL& url, |
| 222 const content::SSLStatus& ssl) { | 295 const content::SSLStatus& ssl) { |
| 223 new WebsiteSettingsPopupView(anchor_view, profile, tab_contents, url, ssl); | 296 if (InternalChromePage(url)) |
| 297 new WebsiteSettingsInternalPageView(anchor_view); | |
| 298 else | |
| 299 new WebsiteSettingsPopupView(anchor_view, profile, tab_contents, url, ssl); | |
| 224 } | 300 } |
| 225 | 301 |
| 226 WebsiteSettingsPopupView::WebsiteSettingsPopupView( | 302 WebsiteSettingsPopupView::WebsiteSettingsPopupView( |
| 227 views::View* anchor_view, | 303 views::View* anchor_view, |
| 228 Profile* profile, | 304 Profile* profile, |
| 229 TabContents* tab_contents, | 305 TabContents* tab_contents, |
| 230 const GURL& url, | 306 const GURL& url, |
| 231 const content::SSLStatus& ssl) | 307 const content::SSLStatus& ssl) |
| 232 : BubbleDelegateView(anchor_view, views::BubbleBorder::TOP_LEFT), | 308 : BubbleDelegateView(anchor_view, views::BubbleBorder::TOP_LEFT), |
| 233 tab_contents_(tab_contents), | 309 tab_contents_(tab_contents), |
| 234 header_(NULL), | 310 header_(NULL), |
| 235 tabbed_pane_(NULL), | 311 tabbed_pane_(NULL), |
| 236 site_data_content_(NULL), | 312 site_data_content_(NULL), |
| 237 cookie_dialog_link_(NULL), | 313 cookie_dialog_link_(NULL), |
| 238 permissions_content_(NULL), | 314 permissions_content_(NULL), |
| 239 identity_info_content_(NULL), | 315 identity_info_content_(NULL), |
| 240 certificate_dialog_link_(NULL), | 316 certificate_dialog_link_(NULL), |
| 241 cert_id_(0), | 317 cert_id_(0), |
| 242 connection_info_content_(NULL), | 318 connection_info_content_(NULL), |
| 243 page_info_content_(NULL) { | 319 page_info_content_(NULL) { |
| 244 if (InternalChromePage(url)) { | |
| 245 views::GridLayout* layout = new views::GridLayout(this); | |
| 246 SetLayoutManager(layout); | |
| 247 views::ColumnSet* column_set = layout->AddColumnSet(0); | |
| 248 column_set->AddColumn(views::GridLayout::FILL, | |
| 249 views::GridLayout::FILL, | |
| 250 0, // Resize weight. | |
| 251 views::GridLayout::USE_PREF, | |
| 252 0, | |
| 253 0); | |
| 254 column_set->AddPaddingColumn(0, kIconMarginLeft); | |
| 255 column_set->AddColumn(views::GridLayout::FILL, | |
| 256 views::GridLayout::FILL, | |
| 257 1, | |
| 258 views::GridLayout::USE_PREF, | |
| 259 0, | |
| 260 0); | |
| 261 | |
| 262 layout->StartRow(1, 0); | |
| 263 | |
| 264 ui::ResourceBundle& rb = ui::ResourceBundle::GetSharedInstance(); | |
| 265 const gfx::Image& icon = rb.GetNativeImageNamed(IDR_PRODUCT_LOGO_26); | |
| 266 views::ImageView* icon_view = new views::ImageView(); | |
| 267 icon_view->SetImage(icon.ToImageSkia()); | |
| 268 layout->AddView(icon_view, 1, 1, views::GridLayout::LEADING, | |
| 269 views::GridLayout::LEADING); | |
| 270 | |
| 271 string16 text = l10n_util::GetStringUTF16( | |
| 272 IDS_PAGE_INFO_INTERNAL_PAGE); | |
| 273 views::Label* label = new views::Label(text); | |
| 274 label->SetMultiLine(true); | |
| 275 label->SetAllowCharacterBreak(true); | |
| 276 label->SetHorizontalAlignment(views::Label::ALIGN_LEFT); | |
| 277 layout->AddView(label, 1, 1, views::GridLayout::LEADING, | |
| 278 views::GridLayout::CENTER); | |
| 279 | |
| 280 views::BubbleDelegateView::CreateBubble(this); | |
| 281 Show(); | |
| 282 SizeToContents(); | |
| 283 } else { | |
| 284 // Non internal chrome page. | |
| 285 views::GridLayout* layout = new views::GridLayout(this); | 320 views::GridLayout* layout = new views::GridLayout(this); |
| 286 SetLayoutManager(layout); | 321 SetLayoutManager(layout); |
| 287 const int content_column = 0; | 322 const int content_column = 0; |
| 288 views::ColumnSet* column_set = layout->AddColumnSet(content_column); | 323 views::ColumnSet* column_set = layout->AddColumnSet(content_column); |
| 289 column_set->AddColumn(views::GridLayout::FILL, | 324 column_set->AddColumn(views::GridLayout::FILL, |
| 290 views::GridLayout::FILL, | 325 views::GridLayout::FILL, |
| 291 1, | 326 1, |
| 292 views::GridLayout::USE_PREF, | 327 views::GridLayout::USE_PREF, |
| 293 0, | 328 0, |
| 294 0); | 329 0); |
| (...skipping 26 matching lines...) Expand all Loading... | |
| 321 views::BubbleDelegateView::CreateBubble(this); | 356 views::BubbleDelegateView::CreateBubble(this); |
| 322 this->Show(); | 357 this->Show(); |
| 323 SizeToContents(); | 358 SizeToContents(); |
| 324 | 359 |
| 325 presenter_.reset(new WebsiteSettings(this, profile, | 360 presenter_.reset(new WebsiteSettings(this, profile, |
| 326 tab_contents->content_settings(), | 361 tab_contents->content_settings(), |
| 327 tab_contents->infobar_tab_helper(), | 362 tab_contents->infobar_tab_helper(), |
| 328 url, | 363 url, |
| 329 ssl, | 364 ssl, |
| 330 content::CertStore::GetInstance())); | 365 content::CertStore::GetInstance())); |
| 331 } | |
| 332 } | 366 } |
| 333 | 367 |
| 334 void WebsiteSettingsPopupView::OnPermissionChanged( | 368 void WebsiteSettingsPopupView::OnPermissionChanged( |
| 335 PermissionSelectorView* permission_selector) { | 369 PermissionSelectorView* permission_selector) { |
| 336 DCHECK(permission_selector); | 370 DCHECK(permission_selector); |
| 337 // It's not necessary to check that the |presenter_| is not NULL since for | |
| 338 // internal chrome pages OnPermissionChanged can't be called. | |
| 339 presenter_->OnSitePermissionChanged( | 371 presenter_->OnSitePermissionChanged( |
| 340 permission_selector->GetPermissionType(), | 372 permission_selector->GetPermissionType(), |
| 341 permission_selector->GetSelectedSetting()); | 373 permission_selector->GetSelectedSetting()); |
| 342 } | 374 } |
| 343 | 375 |
| 344 gfx::Rect WebsiteSettingsPopupView::GetAnchorRect() { | 376 gfx::Rect WebsiteSettingsPopupView::GetAnchorRect() { |
| 345 // Compensate for some built-in padding in the icon. This will make the arrow | 377 // Compensate for some built-in padding in the icon. This will make the arrow |
| 346 // point to the middle of the icon. | 378 // point to the middle of the icon. |
| 347 gfx::Rect anchor(BubbleDelegateView::GetAnchorRect()); | 379 gfx::Rect anchor(BubbleDelegateView::GetAnchorRect()); |
| 348 anchor.Inset(0, anchor_view() ? kLocationIconBottomMargin : 0); | 380 anchor.Inset(0, anchor_view() ? kLocationIconBottomMargin : 0); |
| 349 return anchor; | 381 return anchor; |
| 350 } | 382 } |
| 351 | 383 |
| 352 void WebsiteSettingsPopupView::OnWidgetClosing(views::Widget* widget) { | 384 void WebsiteSettingsPopupView::OnWidgetClosing(views::Widget* widget) { |
| 353 if (presenter_.get()) | 385 presenter_->OnUIClosing(); |
| 354 presenter_->OnUIClosing(); | |
| 355 } | 386 } |
| 356 | 387 |
| 357 void WebsiteSettingsPopupView::ButtonPressed( | 388 void WebsiteSettingsPopupView::ButtonPressed( |
| 358 views::Button* button, | 389 views::Button* button, |
| 359 const views::Event& event) { | 390 const views::Event& event) { |
| 360 GetWidget()->Close(); | 391 GetWidget()->Close(); |
| 361 } | 392 } |
| 362 | 393 |
| 363 void WebsiteSettingsPopupView::LinkClicked(views::Link* source, | 394 void WebsiteSettingsPopupView::LinkClicked(views::Link* source, |
| 364 int event_flags) { | 395 int event_flags) { |
| (...skipping 333 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 698 | 729 |
| 699 if (link) { | 730 if (link) { |
| 700 content_layout->StartRow(1, 0); | 731 content_layout->StartRow(1, 0); |
| 701 content_layout->AddView(link); | 732 content_layout->AddView(link); |
| 702 } | 733 } |
| 703 | 734 |
| 704 layout->AddView(content_pane, 1, 1, views::GridLayout::LEADING, | 735 layout->AddView(content_pane, 1, 1, views::GridLayout::LEADING, |
| 705 views::GridLayout::LEADING); | 736 views::GridLayout::LEADING); |
| 706 layout->AddPaddingRow(0, kConnectionSectionPaddingBottom); | 737 layout->AddPaddingRow(0, kConnectionSectionPaddingBottom); |
| 707 } | 738 } |
| OLD | NEW |