| Index: chrome/browser/automation/automation_provider_observers.cc
|
| diff --git a/chrome/browser/automation/automation_provider_observers.cc b/chrome/browser/automation/automation_provider_observers.cc
|
| index f93c2f8a84eed86f6b09085bea598b2b037e1b37..44906dffa76925f998f98cb06848de4cdd6b6e44 100644
|
| --- a/chrome/browser/automation/automation_provider_observers.cc
|
| +++ b/chrome/browser/automation/automation_provider_observers.cc
|
| @@ -27,6 +27,7 @@
|
| #include "chrome/browser/automation/automation_provider_json.h"
|
| #include "chrome/browser/bookmarks/bookmark_model.h"
|
| #include "chrome/browser/browser_process.h"
|
| +#include "chrome/browser/content_settings/tab_specific_content_settings.h"
|
| #include "chrome/browser/dom_operation_notification_details.h"
|
| #include "chrome/browser/extensions/crx_installer.h"
|
| #include "chrome/browser/extensions/extension_host.h"
|
| @@ -69,6 +70,7 @@
|
| #include "chrome/browser/ui/webui/ntp/recently_closed_tabs_handler.h"
|
| #include "chrome/common/automation_messages.h"
|
| #include "chrome/common/chrome_notification_types.h"
|
| +#include "chrome/common/content_settings_types.h"
|
| #include "chrome/common/extensions/extension.h"
|
| #include "content/browser/download/save_package.h"
|
| #include "content/browser/renderer_host/render_process_host.h"
|
| @@ -1162,6 +1164,8 @@ DomOperationObserver::DomOperationObserver() {
|
| content::NotificationService::AllSources());
|
| registrar_.Add(this, chrome::NOTIFICATION_APP_MODAL_DIALOG_SHOWN,
|
| content::NotificationService::AllSources());
|
| + registrar_.Add(this, chrome::NOTIFICATION_TAB_CONTENT_SETTINGS_CHANGED,
|
| + content::NotificationService::AllSources());
|
| }
|
|
|
| DomOperationObserver::~DomOperationObserver() {}
|
| @@ -1174,6 +1178,17 @@ void DomOperationObserver::Observe(
|
| OnDomOperationCompleted(dom_op_details->json());
|
| } else if (type == chrome::NOTIFICATION_APP_MODAL_DIALOG_SHOWN) {
|
| OnModalDialogShown();
|
| + } else if (type == chrome::NOTIFICATION_TAB_CONTENT_SETTINGS_CHANGED) {
|
| + TabContents* tab_contents = content::Source<TabContents>(source).ptr();
|
| + if (tab_contents) {
|
| + TabContentsWrapper* wrapper =
|
| + TabContentsWrapper::GetCurrentWrapperForContents(tab_contents);
|
| + if (wrapper &&
|
| + wrapper->content_settings()->IsContentBlocked(
|
| + CONTENT_SETTINGS_TYPE_JAVASCRIPT)) {
|
| + OnJavascriptBlocked();
|
| + }
|
| + }
|
| }
|
| }
|
|
|
| @@ -1213,6 +1228,14 @@ void DomOperationMessageSender::OnModalDialogShown() {
|
| }
|
| }
|
|
|
| +void DomOperationMessageSender::OnJavascriptBlocked() {
|
| + if (automation_ && use_json_interface_) {
|
| + AutomationJSONReply(automation_, reply_message_.release())
|
| + .SendError("Javascript execution was blocked");
|
| + delete this;
|
| + }
|
| +}
|
| +
|
| DocumentPrintedNotificationObserver::DocumentPrintedNotificationObserver(
|
| AutomationProvider* automation, IPC::Message* reply_message)
|
| : automation_(automation->AsWeakPtr()),
|
| @@ -1936,6 +1959,10 @@ void PageSnapshotTaker::OnModalDialogShown() {
|
| SendMessage(false, "a modal dialog is active");
|
| }
|
|
|
| +void PageSnapshotTaker::OnJavascriptBlocked() {
|
| + SendMessage(false, "Javascript was blocked");
|
| +}
|
| +
|
| void PageSnapshotTaker::OnSnapshotTaken(const SkBitmap& bitmap) {
|
| base::ThreadRestrictions::ScopedAllowIO allow_io;
|
| std::vector<unsigned char> png_data;
|
|
|