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/content_settings/content_setting_bubble_model.h" | 5 #include "chrome/browser/ui/content_settings/content_setting_bubble_model.h" |
| 6 | 6 |
| 7 #include "base/command_line.h" | 7 #include "base/command_line.h" |
| 8 #include "base/prefs/pref_service.h" | 8 #include "base/prefs/pref_service.h" |
| 9 #include "base/strings/utf_string_conversions.h" | 9 #include "base/strings/utf_string_conversions.h" |
| 10 #include "chrome/browser/chrome_notification_types.h" | 10 #include "chrome/browser/chrome_notification_types.h" |
| (...skipping 18 matching lines...) Expand all Loading... | |
| 29 #include "components/content_settings/core/browser/content_settings_utils.h" | 29 #include "components/content_settings/core/browser/content_settings_utils.h" |
| 30 #include "components/content_settings/core/common/content_settings.h" | 30 #include "components/content_settings/core/common/content_settings.h" |
| 31 #include "content/public/browser/notification_service.h" | 31 #include "content/public/browser/notification_service.h" |
| 32 #include "content/public/browser/render_frame_host.h" | 32 #include "content/public/browser/render_frame_host.h" |
| 33 #include "content/public/browser/render_process_host.h" | 33 #include "content/public/browser/render_process_host.h" |
| 34 #include "content/public/browser/render_view_host.h" | 34 #include "content/public/browser/render_view_host.h" |
| 35 #include "content/public/browser/user_metrics.h" | 35 #include "content/public/browser/user_metrics.h" |
| 36 #include "content/public/browser/web_contents.h" | 36 #include "content/public/browser/web_contents.h" |
| 37 #include "content/public/browser/web_contents_delegate.h" | 37 #include "content/public/browser/web_contents_delegate.h" |
| 38 #include "grit/components_strings.h" | 38 #include "grit/components_strings.h" |
| 39 #include "grit/theme_resources.h" | |
| 39 #include "net/base/net_util.h" | 40 #include "net/base/net_util.h" |
| 40 #include "ui/base/l10n/l10n_util.h" | 41 #include "ui/base/l10n/l10n_util.h" |
| 41 #include "ui/base/resource/resource_bundle.h" | 42 #include "ui/base/resource/resource_bundle.h" |
| 42 #include "ui/resources/grit/ui_resources.h" | 43 #include "ui/resources/grit/ui_resources.h" |
| 43 | 44 |
| 44 using base::UserMetricsAction; | 45 using base::UserMetricsAction; |
| 45 using content::WebContents; | 46 using content::WebContents; |
| 46 using content_settings::SettingInfo; | 47 using content_settings::SettingInfo; |
| 47 using content_settings::SettingSource; | 48 using content_settings::SettingSource; |
| 48 using content_settings::SETTING_SOURCE_USER; | 49 using content_settings::SETTING_SOURCE_USER; |
| (...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 107 SetLearnMoreLink(); | 108 SetLearnMoreLink(); |
| 108 } | 109 } |
| 109 | 110 |
| 110 void ContentSettingTitleAndLinkModel::SetTitle() { | 111 void ContentSettingTitleAndLinkModel::SetTitle() { |
| 111 TabSpecificContentSettings* content_settings = NULL; | 112 TabSpecificContentSettings* content_settings = NULL; |
| 112 if (web_contents()) { | 113 if (web_contents()) { |
| 113 content_settings = | 114 content_settings = |
| 114 TabSpecificContentSettings::FromWebContents(web_contents()); | 115 TabSpecificContentSettings::FromWebContents(web_contents()); |
| 115 } | 116 } |
| 116 | 117 |
| 117 if (content_type() == CONTENT_SETTINGS_TYPE_PLUGINS && content_settings && | |
| 118 content_settings->IsContentBlocked(content_type())) { | |
| 119 set_plugin_names(content_settings->GetBlockedPluginNames()); | |
| 120 } | |
| 121 | |
| 122 static const ContentSettingsTypeIdEntry kBlockedTitleIDs[] = { | 118 static const ContentSettingsTypeIdEntry kBlockedTitleIDs[] = { |
| 123 {CONTENT_SETTINGS_TYPE_COOKIES, IDS_BLOCKED_COOKIES_TITLE}, | 119 {CONTENT_SETTINGS_TYPE_COOKIES, IDS_BLOCKED_COOKIES_TITLE}, |
| 124 {CONTENT_SETTINGS_TYPE_IMAGES, IDS_BLOCKED_IMAGES_TITLE}, | 120 {CONTENT_SETTINGS_TYPE_IMAGES, IDS_BLOCKED_IMAGES_TITLE}, |
| 125 {CONTENT_SETTINGS_TYPE_JAVASCRIPT, IDS_BLOCKED_JAVASCRIPT_TITLE}, | 121 {CONTENT_SETTINGS_TYPE_JAVASCRIPT, IDS_BLOCKED_JAVASCRIPT_TITLE}, |
| 126 {CONTENT_SETTINGS_TYPE_PLUGINS, IDS_BLOCKED_PLUGINS_TITLE}, | 122 {CONTENT_SETTINGS_TYPE_PLUGINS, IDS_BLOCKED_PLUGINS_TITLE}, |
| 127 {CONTENT_SETTINGS_TYPE_POPUPS, IDS_BLOCKED_POPUPS_TITLE}, | 123 {CONTENT_SETTINGS_TYPE_POPUPS, IDS_BLOCKED_POPUPS_TITLE}, |
| 128 {CONTENT_SETTINGS_TYPE_MIXEDSCRIPT, | 124 {CONTENT_SETTINGS_TYPE_MIXEDSCRIPT, |
| 129 IDS_BLOCKED_DISPLAYING_INSECURE_CONTENT}, | 125 IDS_BLOCKED_DISPLAYING_INSECURE_CONTENT}, |
| 130 {CONTENT_SETTINGS_TYPE_PPAPI_BROKER, | 126 {CONTENT_SETTINGS_TYPE_PPAPI_BROKER, |
| 131 IDS_BLOCKED_PPAPI_BROKER_TITLE}, | 127 IDS_BLOCKED_PPAPI_BROKER_TITLE}, |
| (...skipping 286 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 418 } | 414 } |
| 419 | 415 |
| 420 void ContentSettingSingleRadioGroup::OnRadioClicked(int radio_index) { | 416 void ContentSettingSingleRadioGroup::OnRadioClicked(int radio_index) { |
| 421 selected_item_ = radio_index; | 417 selected_item_ = radio_index; |
| 422 } | 418 } |
| 423 | 419 |
| 424 class ContentSettingCookiesBubbleModel : public ContentSettingSingleRadioGroup { | 420 class ContentSettingCookiesBubbleModel : public ContentSettingSingleRadioGroup { |
| 425 public: | 421 public: |
| 426 ContentSettingCookiesBubbleModel(Delegate* delegate, | 422 ContentSettingCookiesBubbleModel(Delegate* delegate, |
| 427 WebContents* web_contents, | 423 WebContents* web_contents, |
| 428 Profile* profile, | 424 Profile* profile); |
| 429 ContentSettingsType content_type); | |
| 430 | 425 |
| 431 ~ContentSettingCookiesBubbleModel() override; | 426 ~ContentSettingCookiesBubbleModel() override; |
| 432 | 427 |
| 433 private: | 428 private: |
| 434 void OnCustomLinkClicked() override; | 429 void OnCustomLinkClicked() override; |
| 435 }; | 430 }; |
| 436 | 431 |
| 437 ContentSettingCookiesBubbleModel::ContentSettingCookiesBubbleModel( | 432 ContentSettingCookiesBubbleModel::ContentSettingCookiesBubbleModel( |
| 438 Delegate* delegate, | 433 Delegate* delegate, |
| 439 WebContents* web_contents, | 434 WebContents* web_contents, |
| 440 Profile* profile, | 435 Profile* profile) |
| 441 ContentSettingsType content_type) | 436 : ContentSettingSingleRadioGroup(delegate, |
|
msw
2015/03/21 00:25:19
nit: un-wrap "delegate, web_contents, profile," he
meacer
2015/03/23 18:19:40
Did you mean the formatting? This is the |git cl f
| |
| 442 : ContentSettingSingleRadioGroup( | 437 web_contents, |
| 443 delegate, web_contents, profile, content_type) { | 438 profile, |
| 444 DCHECK_EQ(CONTENT_SETTINGS_TYPE_COOKIES, content_type); | 439 CONTENT_SETTINGS_TYPE_COOKIES) { |
| 445 set_custom_link_enabled(true); | 440 set_custom_link_enabled(true); |
| 446 } | 441 } |
| 447 | 442 |
| 448 ContentSettingCookiesBubbleModel::~ContentSettingCookiesBubbleModel() { | 443 ContentSettingCookiesBubbleModel::~ContentSettingCookiesBubbleModel() { |
| 449 // On some plattforms e.g. MacOS X it is possible to close a tab while the | 444 // On some plattforms e.g. MacOS X it is possible to close a tab while the |
| 450 // cookies settings bubble is open. This resets the web contents to NULL. | 445 // cookies settings bubble is open. This resets the web contents to NULL. |
| 451 if (settings_changed() && web_contents()) { | 446 if (settings_changed() && web_contents()) { |
| 452 CollectedCookiesInfoBarDelegate::Create( | 447 CollectedCookiesInfoBarDelegate::Create( |
| 453 InfoBarService::FromWebContents(web_contents())); | 448 InfoBarService::FromWebContents(web_contents())); |
| 454 } | 449 } |
| 455 } | 450 } |
| 456 | 451 |
| 457 void ContentSettingCookiesBubbleModel::OnCustomLinkClicked() { | 452 void ContentSettingCookiesBubbleModel::OnCustomLinkClicked() { |
| 458 if (!web_contents()) | 453 if (!web_contents()) |
| 459 return; | 454 return; |
| 460 content::NotificationService::current()->Notify( | 455 content::NotificationService::current()->Notify( |
| 461 chrome::NOTIFICATION_COLLECTED_COOKIES_SHOWN, | 456 chrome::NOTIFICATION_COLLECTED_COOKIES_SHOWN, |
| 462 content::Source<TabSpecificContentSettings>( | 457 content::Source<TabSpecificContentSettings>( |
| 463 TabSpecificContentSettings::FromWebContents(web_contents())), | 458 TabSpecificContentSettings::FromWebContents(web_contents())), |
| 464 content::NotificationService::NoDetails()); | 459 content::NotificationService::NoDetails()); |
| 465 delegate()->ShowCollectedCookiesDialog(web_contents()); | 460 delegate()->ShowCollectedCookiesDialog(web_contents()); |
| 466 } | 461 } |
| 467 | 462 |
| 468 class ContentSettingPluginBubbleModel : public ContentSettingSingleRadioGroup { | 463 class PluginBubbleModel : public ContentSettingSingleRadioGroup { |
| 469 public: | 464 public: |
| 470 ContentSettingPluginBubbleModel(Delegate* delegate, | 465 PluginBubbleModel(Delegate* delegate, |
| 471 WebContents* web_contents, | 466 WebContents* web_contents, |
| 472 Profile* profile, | 467 Profile* profile); |
| 473 ContentSettingsType content_type); | |
| 474 | 468 |
| 475 ~ContentSettingPluginBubbleModel() override; | 469 ~PluginBubbleModel() override; |
| 476 | 470 |
| 477 private: | 471 private: |
| 478 void OnCustomLinkClicked() override; | 472 void OnCustomLinkClicked() override; |
| 473 | |
| 474 void SetListItems(); | |
| 479 }; | 475 }; |
| 480 | 476 |
| 481 ContentSettingPluginBubbleModel::ContentSettingPluginBubbleModel( | 477 PluginBubbleModel::PluginBubbleModel(Delegate* delegate, |
| 482 Delegate* delegate, | 478 WebContents* web_contents, |
| 483 WebContents* web_contents, | 479 Profile* profile) |
| 484 Profile* profile, | 480 : ContentSettingSingleRadioGroup(delegate, |
| 485 ContentSettingsType content_type) | 481 web_contents, |
| 486 : ContentSettingSingleRadioGroup( | 482 profile, |
| 487 delegate, web_contents, profile, content_type) { | 483 CONTENT_SETTINGS_TYPE_PLUGINS) { |
| 488 DCHECK_EQ(content_type, CONTENT_SETTINGS_TYPE_PLUGINS); | |
| 489 // Disable the "Run all plugins this time" link if the setting is managed and | 484 // Disable the "Run all plugins this time" link if the setting is managed and |
| 490 // can't be controlled by the user or if the user already clicked on the link | 485 // can't be controlled by the user or if the user already clicked on the link |
| 491 // and ran all plugins. | 486 // and ran all plugins. |
| 492 set_custom_link_enabled(!setting_is_managed() && | 487 set_custom_link_enabled(!setting_is_managed() && |
| 493 web_contents && | 488 web_contents && |
| 494 TabSpecificContentSettings::FromWebContents( | 489 TabSpecificContentSettings::FromWebContents( |
| 495 web_contents)->load_plugins_link_enabled()); | 490 web_contents)->load_plugins_link_enabled()); |
| 491 SetListItems(); | |
|
msw
2015/03/21 00:25:19
nit: inline this?
meacer
2015/03/23 18:19:40
Done.
| |
| 496 } | 492 } |
| 497 | 493 |
| 498 ContentSettingPluginBubbleModel::~ContentSettingPluginBubbleModel() { | 494 PluginBubbleModel::~PluginBubbleModel() { |
| 499 if (settings_changed()) { | 495 if (settings_changed()) { |
| 500 // If the user elected to allow all plugins then run plugins at this time. | 496 // If the user elected to allow all plugins then run plugins at this time. |
| 501 if (selected_item() == kAllowButtonIndex) | 497 if (selected_item() == kAllowButtonIndex) |
| 502 OnCustomLinkClicked(); | 498 OnCustomLinkClicked(); |
| 503 } | 499 } |
| 504 } | 500 } |
| 505 | 501 |
| 506 void ContentSettingPluginBubbleModel::OnCustomLinkClicked() { | 502 void PluginBubbleModel::SetListItems() { |
| 503 if (!web_contents()) | |
| 504 return; | |
| 505 TabSpecificContentSettings* content_settings = | |
| 506 TabSpecificContentSettings::FromWebContents(web_contents()); | |
| 507 | |
| 508 const std::vector<base::string16>& blocked_plugins = | |
| 509 content_settings->blocked_plugin_names(); | |
| 510 for (auto iter = blocked_plugins.begin(); iter != blocked_plugins.end(); | |
| 511 ++iter) { | |
| 512 // TODO(meacer): Link to chrome://plugins#plugin_id from here. | |
| 513 ListItem plugin_item(ui::ResourceBundle::GetSharedInstance().GetImageNamed( | |
| 514 IDR_BLOCKED_PLUGINS), | |
| 515 base::UTF16ToUTF8(*iter), false, 0); | |
| 516 add_list_item(plugin_item); | |
| 517 } | |
| 518 } | |
| 519 | |
| 520 void PluginBubbleModel::OnCustomLinkClicked() { | |
| 507 content::RecordAction(UserMetricsAction("ClickToPlay_LoadAll_Bubble")); | 521 content::RecordAction(UserMetricsAction("ClickToPlay_LoadAll_Bubble")); |
| 508 // Web contents can be NULL if the tab was closed while the plugins | 522 // Web contents can be NULL if the tab was closed while the plugins |
| 509 // settings bubble is visible. | 523 // settings bubble is visible. |
| 510 if (!web_contents()) | 524 if (!web_contents()) |
| 511 return; | 525 return; |
| 512 #if defined(ENABLE_PLUGINS) | 526 #if defined(ENABLE_PLUGINS) |
| 513 // TODO(bauerb): We should send the identifiers of blocked plugins here. | 527 // TODO(bauerb): We should send the identifiers of blocked plugins here. |
| 514 ChromePluginServiceFilter::GetInstance()->AuthorizeAllPlugins( | 528 ChromePluginServiceFilter::GetInstance()->AuthorizeAllPlugins( |
| 515 web_contents(), true, std::string()); | 529 web_contents(), true, std::string()); |
| 516 #endif | 530 #endif |
| 517 set_custom_link_enabled(false); | 531 set_custom_link_enabled(false); |
| 518 TabSpecificContentSettings::FromWebContents(web_contents())-> | 532 TabSpecificContentSettings::FromWebContents(web_contents())-> |
| 519 set_load_plugins_link_enabled(false); | 533 set_load_plugins_link_enabled(false); |
| 520 } | 534 } |
| 521 | 535 |
| 522 class ContentSettingPopupBubbleModel : public ContentSettingSingleRadioGroup { | 536 class PopupBubbleModel : public ContentSettingSingleRadioGroup { |
| 523 public: | 537 public: |
| 524 ContentSettingPopupBubbleModel(Delegate* delegate, | 538 PopupBubbleModel(Delegate* delegate, |
| 525 WebContents* web_contents, | 539 WebContents* web_contents, |
| 526 Profile* profile, | 540 Profile* profile); |
| 527 ContentSettingsType content_type); | 541 ~PopupBubbleModel() override {} |
| 528 ~ContentSettingPopupBubbleModel() override {} | |
| 529 | 542 |
| 530 private: | 543 private: |
| 531 void SetPopups(); | 544 void OnListItemClicked(int index) override; |
| 532 void OnPopupClicked(int index) override; | 545 |
| 546 void SetListItems(); | |
| 547 | |
| 548 int32 item_id_from_item_index(int index) const { | |
| 549 return bubble_content().list_items[index].item_id; | |
| 550 } | |
| 533 }; | 551 }; |
| 534 | 552 |
| 535 ContentSettingPopupBubbleModel::ContentSettingPopupBubbleModel( | 553 PopupBubbleModel::PopupBubbleModel(Delegate* delegate, |
| 536 Delegate* delegate, | 554 WebContents* web_contents, |
| 537 WebContents* web_contents, | 555 Profile* profile) |
| 538 Profile* profile, | 556 : ContentSettingSingleRadioGroup(delegate, |
| 539 ContentSettingsType content_type) | 557 web_contents, |
| 540 : ContentSettingSingleRadioGroup( | 558 profile, |
| 541 delegate, web_contents, profile, content_type) { | 559 CONTENT_SETTINGS_TYPE_POPUPS) { |
| 542 SetPopups(); | 560 SetListItems(); |
| 543 } | 561 } |
| 544 | 562 |
| 545 | 563 void PopupBubbleModel::SetListItems() { |
|
msw
2015/03/21 00:25:19
ditto nit: inline this?
meacer
2015/03/23 18:19:40
Done.
| |
| 546 void ContentSettingPopupBubbleModel::SetPopups() { | |
| 547 std::map<int32, GURL> blocked_popups = | 564 std::map<int32, GURL> blocked_popups = |
| 548 PopupBlockerTabHelper::FromWebContents(web_contents()) | 565 PopupBlockerTabHelper::FromWebContents(web_contents()) |
| 549 ->GetBlockedPopupRequests(); | 566 ->GetBlockedPopupRequests(); |
| 550 for (std::map<int32, GURL>::const_iterator iter = blocked_popups.begin(); | 567 for (auto iter = blocked_popups.begin(); iter != blocked_popups.end(); |
| 551 iter != blocked_popups.end(); | |
| 552 ++iter) { | 568 ++iter) { |
| 553 std::string title(iter->second.spec()); | 569 std::string title(iter->second.spec()); |
| 554 // The popup may not have a valid URL. | 570 // The popup may not have a valid URL. |
| 555 if (title.empty()) | 571 if (title.empty()) |
| 556 title = l10n_util::GetStringUTF8(IDS_TAB_LOADING_TITLE); | 572 title = l10n_util::GetStringUTF8(IDS_TAB_LOADING_TITLE); |
| 557 PopupItem popup_item( | 573 ListItem popup_item(ui::ResourceBundle::GetSharedInstance().GetImageNamed( |
| 558 ui::ResourceBundle::GetSharedInstance().GetImageNamed( | 574 IDR_DEFAULT_FAVICON), |
| 559 IDR_DEFAULT_FAVICON), | 575 title, true, iter->first); |
| 560 title, | 576 add_list_item(popup_item); |
| 561 iter->first); | |
| 562 add_popup(popup_item); | |
| 563 } | 577 } |
| 564 } | 578 } |
| 565 | 579 |
| 566 void ContentSettingPopupBubbleModel::OnPopupClicked(int index) { | 580 void PopupBubbleModel::OnListItemClicked(int index) { |
| 567 if (web_contents()) { | 581 if (web_contents()) { |
| 568 PopupBlockerTabHelper::FromWebContents(web_contents())-> | 582 PopupBlockerTabHelper::FromWebContents(web_contents()) |
| 569 ShowBlockedPopup(bubble_content().popup_items[index].popup_id); | 583 ->ShowBlockedPopup(item_id_from_item_index(index)); |
| 570 } | 584 } |
| 571 } | 585 } |
| 572 | 586 |
| 573 // The model of the content settings bubble for media settings. | 587 // The model of the content settings bubble for media settings. |
| 574 class ContentSettingMediaStreamBubbleModel | 588 class ContentSettingMediaStreamBubbleModel |
| 575 : public ContentSettingTitleAndLinkModel { | 589 : public ContentSettingTitleAndLinkModel { |
| 576 public: | 590 public: |
| 577 ContentSettingMediaStreamBubbleModel(Delegate* delegate, | 591 ContentSettingMediaStreamBubbleModel(Delegate* delegate, |
| 578 WebContents* web_contents, | 592 WebContents* web_contents, |
| 579 Profile* profile); | 593 Profile* profile); |
| (...skipping 381 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 961 std::string(), | 975 std::string(), |
| 962 CONTENT_SETTING_DEFAULT); | 976 CONTENT_SETTING_DEFAULT); |
| 963 } | 977 } |
| 964 } | 978 } |
| 965 | 979 |
| 966 class ContentSettingMixedScriptBubbleModel | 980 class ContentSettingMixedScriptBubbleModel |
| 967 : public ContentSettingTitleLinkAndCustomModel { | 981 : public ContentSettingTitleLinkAndCustomModel { |
| 968 public: | 982 public: |
| 969 ContentSettingMixedScriptBubbleModel(Delegate* delegate, | 983 ContentSettingMixedScriptBubbleModel(Delegate* delegate, |
| 970 WebContents* web_contents, | 984 WebContents* web_contents, |
| 971 Profile* profile, | 985 Profile* profile); |
| 972 ContentSettingsType content_type); | |
| 973 | 986 |
| 974 ~ContentSettingMixedScriptBubbleModel() override {} | 987 ~ContentSettingMixedScriptBubbleModel() override {} |
| 975 | 988 |
| 976 private: | 989 private: |
| 977 void OnCustomLinkClicked() override; | 990 void OnCustomLinkClicked() override; |
| 978 }; | 991 }; |
| 979 | 992 |
| 980 ContentSettingMixedScriptBubbleModel::ContentSettingMixedScriptBubbleModel( | 993 ContentSettingMixedScriptBubbleModel::ContentSettingMixedScriptBubbleModel( |
| 981 Delegate* delegate, | 994 Delegate* delegate, |
| 982 WebContents* web_contents, | 995 WebContents* web_contents, |
| 983 Profile* profile, | 996 Profile* profile) |
| 984 ContentSettingsType content_type) | 997 : ContentSettingTitleLinkAndCustomModel(delegate, |
| 985 : ContentSettingTitleLinkAndCustomModel( | 998 web_contents, |
| 986 delegate, web_contents, profile, content_type) { | 999 profile, |
| 987 DCHECK_EQ(content_type, CONTENT_SETTINGS_TYPE_MIXEDSCRIPT); | 1000 CONTENT_SETTINGS_TYPE_MIXEDSCRIPT) { |
| 988 content_settings::RecordMixedScriptAction( | 1001 content_settings::RecordMixedScriptAction( |
| 989 content_settings::MIXED_SCRIPT_ACTION_DISPLAYED_BUBBLE); | 1002 content_settings::MIXED_SCRIPT_ACTION_DISPLAYED_BUBBLE); |
| 990 set_custom_link_enabled(true); | 1003 set_custom_link_enabled(true); |
| 991 } | 1004 } |
| 992 | 1005 |
| 993 void ContentSettingMixedScriptBubbleModel::OnCustomLinkClicked() { | 1006 void ContentSettingMixedScriptBubbleModel::OnCustomLinkClicked() { |
| 994 content_settings::RecordMixedScriptAction( | 1007 content_settings::RecordMixedScriptAction( |
| 995 content_settings::MIXED_SCRIPT_ACTION_CLICKED_ALLOW); | 1008 content_settings::MIXED_SCRIPT_ACTION_CLICKED_ALLOW); |
| 996 DCHECK(web_contents()); | 1009 DCHECK(web_contents()); |
| 997 web_contents()->SendToAllFrames( | 1010 web_contents()->SendToAllFrames( |
| 998 new ChromeViewMsg_SetAllowRunningInsecureContent(MSG_ROUTING_NONE, true)); | 1011 new ChromeViewMsg_SetAllowRunningInsecureContent(MSG_ROUTING_NONE, true)); |
| 999 web_contents()->GetMainFrame()->Send(new ChromeViewMsg_ReloadFrame( | 1012 web_contents()->GetMainFrame()->Send(new ChromeViewMsg_ReloadFrame( |
| 1000 web_contents()->GetMainFrame()->GetRoutingID())); | 1013 web_contents()->GetMainFrame()->GetRoutingID())); |
| 1001 } | 1014 } |
| 1002 | 1015 |
| 1003 ContentSettingRPHBubbleModel::ContentSettingRPHBubbleModel( | 1016 ContentSettingRPHBubbleModel::ContentSettingRPHBubbleModel( |
| 1004 Delegate* delegate, | 1017 Delegate* delegate, |
| 1005 WebContents* web_contents, | 1018 WebContents* web_contents, |
| 1006 Profile* profile, | 1019 Profile* profile, |
| 1007 ProtocolHandlerRegistry* registry, | 1020 ProtocolHandlerRegistry* registry) |
| 1008 ContentSettingsType content_type) | 1021 : ContentSettingTitleAndLinkModel(delegate, |
| 1009 : ContentSettingTitleAndLinkModel( | 1022 web_contents, |
| 1010 delegate, web_contents, profile, content_type), | 1023 profile, |
| 1024 CONTENT_SETTINGS_TYPE_PROTOCOL_HANDLERS), | |
| 1011 selected_item_(0), | 1025 selected_item_(0), |
| 1012 registry_(registry), | 1026 registry_(registry), |
| 1013 pending_handler_(ProtocolHandler::EmptyProtocolHandler()), | 1027 pending_handler_(ProtocolHandler::EmptyProtocolHandler()), |
| 1014 previous_handler_(ProtocolHandler::EmptyProtocolHandler()) { | 1028 previous_handler_(ProtocolHandler::EmptyProtocolHandler()) { |
| 1015 DCHECK_EQ(CONTENT_SETTINGS_TYPE_PROTOCOL_HANDLERS, content_type); | |
| 1016 | |
| 1017 TabSpecificContentSettings* content_settings = | 1029 TabSpecificContentSettings* content_settings = |
| 1018 TabSpecificContentSettings::FromWebContents(web_contents); | 1030 TabSpecificContentSettings::FromWebContents(web_contents); |
| 1019 pending_handler_ = content_settings->pending_protocol_handler(); | 1031 pending_handler_ = content_settings->pending_protocol_handler(); |
| 1020 previous_handler_ = content_settings->previous_protocol_handler(); | 1032 previous_handler_ = content_settings->previous_protocol_handler(); |
| 1021 | 1033 |
| 1022 base::string16 protocol; | 1034 base::string16 protocol; |
| 1023 if (pending_handler_.protocol() == "mailto") { | 1035 if (pending_handler_.protocol() == "mailto") { |
| 1024 protocol = l10n_util::GetStringUTF16( | 1036 protocol = l10n_util::GetStringUTF16( |
| 1025 IDS_REGISTER_PROTOCOL_HANDLER_MAILTO_NAME); | 1037 IDS_REGISTER_PROTOCOL_HANDLER_MAILTO_NAME); |
| 1026 } else if (pending_handler_.protocol() == "webcal") { | 1038 } else if (pending_handler_.protocol() == "webcal") { |
| (...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1129 } else { | 1141 } else { |
| 1130 registry_->OnAcceptRegisterProtocolHandler(previous_handler_); | 1142 registry_->OnAcceptRegisterProtocolHandler(previous_handler_); |
| 1131 } | 1143 } |
| 1132 } | 1144 } |
| 1133 | 1145 |
| 1134 class ContentSettingMidiSysExBubbleModel | 1146 class ContentSettingMidiSysExBubbleModel |
| 1135 : public ContentSettingTitleAndLinkModel { | 1147 : public ContentSettingTitleAndLinkModel { |
| 1136 public: | 1148 public: |
| 1137 ContentSettingMidiSysExBubbleModel(Delegate* delegate, | 1149 ContentSettingMidiSysExBubbleModel(Delegate* delegate, |
| 1138 WebContents* web_contents, | 1150 WebContents* web_contents, |
| 1139 Profile* profile, | 1151 Profile* profile); |
| 1140 ContentSettingsType content_type); | |
| 1141 ~ContentSettingMidiSysExBubbleModel() override {} | 1152 ~ContentSettingMidiSysExBubbleModel() override {} |
| 1142 | 1153 |
| 1143 private: | 1154 private: |
| 1144 void MaybeAddDomainList(const std::set<std::string>& hosts, int title_id); | 1155 void MaybeAddDomainList(const std::set<std::string>& hosts, int title_id); |
| 1145 void SetDomainsAndCustomLink(); | 1156 void SetDomainsAndCustomLink(); |
| 1146 void OnCustomLinkClicked() override; | 1157 void OnCustomLinkClicked() override; |
| 1147 }; | 1158 }; |
| 1148 | 1159 |
| 1149 ContentSettingMidiSysExBubbleModel::ContentSettingMidiSysExBubbleModel( | 1160 ContentSettingMidiSysExBubbleModel::ContentSettingMidiSysExBubbleModel( |
| 1150 Delegate* delegate, | 1161 Delegate* delegate, |
| 1151 WebContents* web_contents, | 1162 WebContents* web_contents, |
| 1152 Profile* profile, | 1163 Profile* profile) |
| 1153 ContentSettingsType content_type) | 1164 : ContentSettingTitleAndLinkModel(delegate, |
| 1154 : ContentSettingTitleAndLinkModel( | 1165 web_contents, |
| 1155 delegate, web_contents, profile, content_type) { | 1166 profile, |
| 1156 DCHECK_EQ(CONTENT_SETTINGS_TYPE_MIDI_SYSEX, content_type); | 1167 CONTENT_SETTINGS_TYPE_MIDI_SYSEX) { |
| 1157 SetDomainsAndCustomLink(); | 1168 SetDomainsAndCustomLink(); |
| 1158 } | 1169 } |
| 1159 | 1170 |
| 1160 void ContentSettingMidiSysExBubbleModel::MaybeAddDomainList( | 1171 void ContentSettingMidiSysExBubbleModel::MaybeAddDomainList( |
| 1161 const std::set<std::string>& hosts, int title_id) { | 1172 const std::set<std::string>& hosts, int title_id) { |
| 1162 if (!hosts.empty()) { | 1173 if (!hosts.empty()) { |
| 1163 DomainList domain_list; | 1174 DomainList domain_list; |
| 1164 domain_list.title = l10n_util::GetStringUTF8(title_id); | 1175 domain_list.title = l10n_util::GetStringUTF8(title_id); |
| 1165 domain_list.hosts = hosts; | 1176 domain_list.hosts = hosts; |
| 1166 add_domain_list(domain_list); | 1177 add_domain_list(domain_list); |
| (...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1219 } | 1230 } |
| 1220 | 1231 |
| 1221 // static | 1232 // static |
| 1222 ContentSettingBubbleModel* | 1233 ContentSettingBubbleModel* |
| 1223 ContentSettingBubbleModel::CreateContentSettingBubbleModel( | 1234 ContentSettingBubbleModel::CreateContentSettingBubbleModel( |
| 1224 Delegate* delegate, | 1235 Delegate* delegate, |
| 1225 WebContents* web_contents, | 1236 WebContents* web_contents, |
| 1226 Profile* profile, | 1237 Profile* profile, |
| 1227 ContentSettingsType content_type) { | 1238 ContentSettingsType content_type) { |
| 1228 if (content_type == CONTENT_SETTINGS_TYPE_COOKIES) { | 1239 if (content_type == CONTENT_SETTINGS_TYPE_COOKIES) { |
| 1229 return new ContentSettingCookiesBubbleModel(delegate, web_contents, profile, | 1240 return new ContentSettingCookiesBubbleModel(delegate, web_contents, |
| 1230 content_type); | 1241 profile); |
| 1231 } | 1242 } |
| 1232 if (content_type == CONTENT_SETTINGS_TYPE_POPUPS) { | 1243 if (content_type == CONTENT_SETTINGS_TYPE_POPUPS) { |
| 1233 return new ContentSettingPopupBubbleModel(delegate, web_contents, profile, | 1244 return new PopupBubbleModel(delegate, web_contents, profile); |
| 1234 content_type); | |
| 1235 } | 1245 } |
| 1236 if (content_type == CONTENT_SETTINGS_TYPE_GEOLOCATION) { | 1246 if (content_type == CONTENT_SETTINGS_TYPE_GEOLOCATION) { |
| 1237 return new ContentSettingDomainListBubbleModel(delegate, web_contents, | 1247 return new ContentSettingDomainListBubbleModel(delegate, web_contents, |
| 1238 profile, content_type); | 1248 profile, content_type); |
| 1239 } | 1249 } |
| 1240 if (content_type == CONTENT_SETTINGS_TYPE_MEDIASTREAM) { | 1250 if (content_type == CONTENT_SETTINGS_TYPE_MEDIASTREAM) { |
| 1241 return new ContentSettingMediaStreamBubbleModel(delegate, web_contents, | 1251 return new ContentSettingMediaStreamBubbleModel(delegate, web_contents, |
| 1242 profile); | 1252 profile); |
| 1243 } | 1253 } |
| 1244 if (content_type == CONTENT_SETTINGS_TYPE_PLUGINS) { | 1254 if (content_type == CONTENT_SETTINGS_TYPE_PLUGINS) { |
| 1245 return new ContentSettingPluginBubbleModel(delegate, web_contents, profile, | 1255 return new PluginBubbleModel(delegate, web_contents, profile); |
| 1246 content_type); | |
| 1247 } | 1256 } |
| 1248 if (content_type == CONTENT_SETTINGS_TYPE_MIXEDSCRIPT) { | 1257 if (content_type == CONTENT_SETTINGS_TYPE_MIXEDSCRIPT) { |
| 1249 return new ContentSettingMixedScriptBubbleModel(delegate, web_contents, | 1258 return new ContentSettingMixedScriptBubbleModel(delegate, web_contents, |
| 1250 profile, content_type); | 1259 profile); |
| 1251 } | 1260 } |
| 1252 if (content_type == CONTENT_SETTINGS_TYPE_PROTOCOL_HANDLERS) { | 1261 if (content_type == CONTENT_SETTINGS_TYPE_PROTOCOL_HANDLERS) { |
| 1253 ProtocolHandlerRegistry* registry = | 1262 ProtocolHandlerRegistry* registry = |
| 1254 ProtocolHandlerRegistryFactory::GetForBrowserContext(profile); | 1263 ProtocolHandlerRegistryFactory::GetForBrowserContext(profile); |
| 1255 return new ContentSettingRPHBubbleModel(delegate, web_contents, profile, | 1264 return new ContentSettingRPHBubbleModel(delegate, web_contents, profile, |
| 1256 registry, content_type); | 1265 registry); |
| 1257 } | 1266 } |
| 1258 if (content_type == CONTENT_SETTINGS_TYPE_MIDI_SYSEX) { | 1267 if (content_type == CONTENT_SETTINGS_TYPE_MIDI_SYSEX) { |
| 1259 return new ContentSettingMidiSysExBubbleModel(delegate, web_contents, | 1268 return new ContentSettingMidiSysExBubbleModel(delegate, web_contents, |
| 1260 profile, content_type); | 1269 profile); |
| 1261 } | 1270 } |
| 1262 return new ContentSettingSingleRadioGroup(delegate, web_contents, profile, | 1271 return new ContentSettingSingleRadioGroup(delegate, web_contents, profile, |
| 1263 content_type); | 1272 content_type); |
| 1264 } | 1273 } |
| 1265 | 1274 |
| 1266 ContentSettingBubbleModel::ContentSettingBubbleModel( | 1275 ContentSettingBubbleModel::ContentSettingBubbleModel( |
| 1267 WebContents* web_contents, | 1276 WebContents* web_contents, |
| 1268 Profile* profile, | 1277 Profile* profile, |
| 1269 ContentSettingsType content_type) | 1278 ContentSettingsType content_type) |
| 1270 : web_contents_(web_contents), | 1279 : web_contents_(web_contents), |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1306 if (type == content::NOTIFICATION_WEB_CONTENTS_DESTROYED) { | 1315 if (type == content::NOTIFICATION_WEB_CONTENTS_DESTROYED) { |
| 1307 DCHECK_EQ(web_contents_, | 1316 DCHECK_EQ(web_contents_, |
| 1308 content::Source<WebContents>(source).ptr()); | 1317 content::Source<WebContents>(source).ptr()); |
| 1309 web_contents_ = NULL; | 1318 web_contents_ = NULL; |
| 1310 } else { | 1319 } else { |
| 1311 DCHECK_EQ(chrome::NOTIFICATION_PROFILE_DESTROYED, type); | 1320 DCHECK_EQ(chrome::NOTIFICATION_PROFILE_DESTROYED, type); |
| 1312 DCHECK_EQ(profile_, content::Source<Profile>(source).ptr()); | 1321 DCHECK_EQ(profile_, content::Source<Profile>(source).ptr()); |
| 1313 profile_ = NULL; | 1322 profile_ = NULL; |
| 1314 } | 1323 } |
| 1315 } | 1324 } |
| OLD | NEW |