| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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/android/content_settings/popup_blocked_infobar_deleg
ate.h" | 5 #include "chrome/browser/ui/android/content_settings/popup_blocked_infobar_deleg
ate.h" |
| 6 | 6 |
| 7 #include "base/prefs/pref_service.h" | 7 #include "base/prefs/pref_service.h" |
| 8 #include "chrome/browser/content_settings/host_content_settings_map.h" | 8 #include "chrome/browser/content_settings/host_content_settings_map.h" |
| 9 #include "chrome/browser/infobars/infobar.h" |
| 9 #include "chrome/browser/infobars/infobar_service.h" | 10 #include "chrome/browser/infobars/infobar_service.h" |
| 10 #include "chrome/browser/profiles/profile.h" | 11 #include "chrome/browser/profiles/profile.h" |
| 11 #include "chrome/browser/ui/blocked_content/popup_blocker_tab_helper.h" | 12 #include "chrome/browser/ui/blocked_content/popup_blocker_tab_helper.h" |
| 12 #include "chrome/common/content_settings_types.h" | 13 #include "chrome/common/content_settings_types.h" |
| 13 #include "grit/generated_resources.h" | 14 #include "grit/generated_resources.h" |
| 14 #include "grit/theme_resources.h" | 15 #include "grit/theme_resources.h" |
| 15 #include "ui/base/l10n/l10n_util.h" | 16 #include "ui/base/l10n/l10n_util.h" |
| 16 | 17 |
| 17 | 18 |
| 18 // static | 19 // static |
| 19 void PopupBlockedInfoBarDelegate::Create(InfoBarService* infobar_service, | 20 void PopupBlockedInfoBarDelegate::Create(InfoBarService* infobar_service, |
| 20 int num_popups) { | 21 int num_popups) { |
| 21 scoped_ptr<InfoBarDelegate> infobar( | 22 scoped_ptr<InfoBar> infobar(ConfirmInfoBarDelegate::CreateInfoBar( |
| 22 new PopupBlockedInfoBarDelegate(infobar_service, num_popups)); | 23 scoped_ptr<ConfirmInfoBarDelegate>( |
| 24 new PopupBlockedInfoBarDelegate(num_popups)))); |
| 23 | 25 |
| 24 // See if there is an existing popup infobar already. | 26 // See if there is an existing popup infobar already. |
| 25 // TODO(dfalcantara) When triggering more than one popup the infobar | 27 // TODO(dfalcantara) When triggering more than one popup the infobar |
| 26 // will be shown once, then hide then be shown again. | 28 // will be shown once, then hide then be shown again. |
| 27 // This will be fixed once we have an in place replace infobar mechanism. | 29 // This will be fixed once we have an in place replace infobar mechanism. |
| 28 for (size_t i = 0; i < infobar_service->infobar_count(); ++i) { | 30 for (size_t i = 0; i < infobar_service->infobar_count(); ++i) { |
| 29 InfoBarDelegate* existing_infobar = infobar_service->infobar_at(i); | 31 InfoBar* existing_infobar = infobar_service->infobar_at(i); |
| 30 if (existing_infobar->AsPopupBlockedInfoBarDelegate()) { | 32 if (existing_infobar->delegate()->AsPopupBlockedInfoBarDelegate()) { |
| 31 infobar_service->ReplaceInfoBar(existing_infobar, infobar.Pass()); | 33 infobar_service->ReplaceInfoBar(existing_infobar, infobar.Pass()); |
| 32 return; | 34 return; |
| 33 } | 35 } |
| 34 } | 36 } |
| 35 | 37 |
| 36 infobar_service->AddInfoBar(infobar.Pass()); | 38 infobar_service->AddInfoBar(infobar.Pass()); |
| 37 } | 39 } |
| 38 | 40 |
| 39 PopupBlockedInfoBarDelegate::~PopupBlockedInfoBarDelegate() { | 41 PopupBlockedInfoBarDelegate::~PopupBlockedInfoBarDelegate() { |
| 40 } | 42 } |
| 41 | 43 |
| 42 int PopupBlockedInfoBarDelegate::GetIconID() const { | 44 int PopupBlockedInfoBarDelegate::GetIconID() const { |
| 43 return IDR_BLOCKED_POPUPS; | 45 return IDR_BLOCKED_POPUPS; |
| 44 } | 46 } |
| 45 | 47 |
| 46 PopupBlockedInfoBarDelegate* | 48 PopupBlockedInfoBarDelegate* |
| 47 PopupBlockedInfoBarDelegate::AsPopupBlockedInfoBarDelegate() { | 49 PopupBlockedInfoBarDelegate::AsPopupBlockedInfoBarDelegate() { |
| 48 return this; | 50 return this; |
| 49 } | 51 } |
| 50 | 52 |
| 51 PopupBlockedInfoBarDelegate::PopupBlockedInfoBarDelegate( | 53 PopupBlockedInfoBarDelegate::PopupBlockedInfoBarDelegate(int num_popups) |
| 52 InfoBarService* infobar_service, | 54 : ConfirmInfoBarDelegate(), |
| 53 int num_popups) | |
| 54 : ConfirmInfoBarDelegate(infobar_service), | |
| 55 num_popups_(num_popups) { | 55 num_popups_(num_popups) { |
| 56 } | 56 } |
| 57 | 57 |
| 58 string16 PopupBlockedInfoBarDelegate::GetMessageText() const { | 58 string16 PopupBlockedInfoBarDelegate::GetMessageText() const { |
| 59 return l10n_util::GetStringFUTF16Int(IDS_POPUPS_BLOCKED_INFOBAR_TEXT, | 59 return l10n_util::GetStringFUTF16Int(IDS_POPUPS_BLOCKED_INFOBAR_TEXT, |
| 60 num_popups_); | 60 num_popups_); |
| 61 } | 61 } |
| 62 | 62 |
| 63 int PopupBlockedInfoBarDelegate::GetButtons() const { | 63 int PopupBlockedInfoBarDelegate::GetButtons() const { |
| 64 return BUTTON_OK; | 64 return BUTTON_OK; |
| 65 } | 65 } |
| 66 | 66 |
| 67 string16 PopupBlockedInfoBarDelegate::GetButtonLabel( | 67 string16 PopupBlockedInfoBarDelegate::GetButtonLabel( |
| 68 InfoBarButton button) const { | 68 InfoBarButton button) const { |
| 69 return l10n_util::GetStringUTF16(IDS_POPUPS_BLOCKED_INFOBAR_BUTTON_SHOW); | 69 return l10n_util::GetStringUTF16(IDS_POPUPS_BLOCKED_INFOBAR_BUTTON_SHOW); |
| 70 } | 70 } |
| 71 | 71 |
| 72 bool PopupBlockedInfoBarDelegate::Accept() { | 72 bool PopupBlockedInfoBarDelegate::Accept() { |
| 73 // Create exceptions. | 73 // Create exceptions. |
| 74 content::WebContents* web_contents = owner()->web_contents(); | 74 const GURL& url = web_contents()->GetURL(); |
| 75 const GURL& url = web_contents->GetURL(); | |
| 76 Profile* profile = Profile::FromBrowserContext( | 75 Profile* profile = Profile::FromBrowserContext( |
| 77 web_contents->GetBrowserContext()); | 76 web_contents()->GetBrowserContext()); |
| 78 profile->GetHostContentSettingsMap()->AddExceptionForURL( | 77 profile->GetHostContentSettingsMap()->AddExceptionForURL( |
| 79 url, url, CONTENT_SETTINGS_TYPE_POPUPS, std::string(), | 78 url, url, CONTENT_SETTINGS_TYPE_POPUPS, std::string(), |
| 80 CONTENT_SETTING_ALLOW); | 79 CONTENT_SETTING_ALLOW); |
| 81 | 80 |
| 82 // Launch popups. | 81 // Launch popups. |
| 83 PopupBlockerTabHelper* popup_blocker_helper = | 82 PopupBlockerTabHelper* popup_blocker_helper = |
| 84 PopupBlockerTabHelper::FromWebContents(web_contents); | 83 PopupBlockerTabHelper::FromWebContents(web_contents()); |
| 85 DCHECK(popup_blocker_helper); | 84 DCHECK(popup_blocker_helper); |
| 86 PopupBlockerTabHelper::PopupIdMap blocked_popups = | 85 PopupBlockerTabHelper::PopupIdMap blocked_popups = |
| 87 popup_blocker_helper->GetBlockedPopupRequests(); | 86 popup_blocker_helper->GetBlockedPopupRequests(); |
| 88 for (PopupBlockerTabHelper::PopupIdMap::iterator it = blocked_popups.begin(); | 87 for (PopupBlockerTabHelper::PopupIdMap::iterator it = blocked_popups.begin(); |
| 89 it != blocked_popups.end(); ++it) | 88 it != blocked_popups.end(); ++it) |
| 90 popup_blocker_helper->ShowBlockedPopup(it->first); | 89 popup_blocker_helper->ShowBlockedPopup(it->first); |
| 91 | 90 |
| 92 return true; | 91 return true; |
| 93 } | 92 } |
| 94 | 93 |
| OLD | NEW |