| OLD | NEW |
| 1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2009 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/renderer/render_view.h" | 5 #include "chrome/renderer/render_view.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 #include <string> | 8 #include <string> |
| 9 #include <vector> | 9 #include <vector> |
| 10 | 10 |
| (...skipping 17 matching lines...) Expand all Loading... |
| 28 #include "chrome/common/page_zoom.h" | 28 #include "chrome/common/page_zoom.h" |
| 29 #include "chrome/common/render_messages.h" | 29 #include "chrome/common/render_messages.h" |
| 30 #include "chrome/common/renderer_preferences.h" | 30 #include "chrome/common/renderer_preferences.h" |
| 31 #include "chrome/common/thumbnail_score.h" | 31 #include "chrome/common/thumbnail_score.h" |
| 32 #include "chrome/common/url_constants.h" | 32 #include "chrome/common/url_constants.h" |
| 33 #include "chrome/renderer/about_handler.h" | 33 #include "chrome/renderer/about_handler.h" |
| 34 #include "chrome/renderer/audio_message_filter.h" | 34 #include "chrome/renderer/audio_message_filter.h" |
| 35 #include "chrome/renderer/debug_message_handler.h" | 35 #include "chrome/renderer/debug_message_handler.h" |
| 36 #include "chrome/renderer/devtools_agent.h" | 36 #include "chrome/renderer/devtools_agent.h" |
| 37 #include "chrome/renderer/devtools_client.h" | 37 #include "chrome/renderer/devtools_client.h" |
| 38 #include "chrome/renderer/extensions/event_bindings.h" |
| 38 #include "chrome/renderer/extensions/extension_process_bindings.h" | 39 #include "chrome/renderer/extensions/extension_process_bindings.h" |
| 39 #include "chrome/renderer/localized_error.h" | 40 #include "chrome/renderer/localized_error.h" |
| 40 #include "chrome/renderer/media/audio_renderer_impl.h" | 41 #include "chrome/renderer/media/audio_renderer_impl.h" |
| 41 #include "chrome/renderer/media/buffered_data_source.h" | 42 #include "chrome/renderer/media/buffered_data_source.h" |
| 42 #include "chrome/renderer/navigation_state.h" | 43 #include "chrome/renderer/navigation_state.h" |
| 43 #include "chrome/renderer/print_web_view_helper.h" | 44 #include "chrome/renderer/print_web_view_helper.h" |
| 44 #include "chrome/renderer/render_process.h" | 45 #include "chrome/renderer/render_process.h" |
| 45 #include "chrome/renderer/renderer_logging.h" | 46 #include "chrome/renderer/renderer_logging.h" |
| 46 #include "chrome/renderer/user_script_slave.h" | 47 #include "chrome/renderer/user_script_slave.h" |
| 47 #include "chrome/renderer/visitedlink_slave.h" | 48 #include "chrome/renderer/visitedlink_slave.h" |
| (...skipping 252 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 300 if (command_line.HasSwitch(switches::kDomAutomationController)) | 301 if (command_line.HasSwitch(switches::kDomAutomationController)) |
| 301 enabled_bindings_ |= BindingsPolicy::DOM_AUTOMATION; | 302 enabled_bindings_ |= BindingsPolicy::DOM_AUTOMATION; |
| 302 | 303 |
| 303 debug_message_handler_ = new DebugMessageHandler(this); | 304 debug_message_handler_ = new DebugMessageHandler(this); |
| 304 render_thread_->AddFilter(debug_message_handler_); | 305 render_thread_->AddFilter(debug_message_handler_); |
| 305 | 306 |
| 306 audio_message_filter_ = new AudioMessageFilter(routing_id_); | 307 audio_message_filter_ = new AudioMessageFilter(routing_id_); |
| 307 render_thread_->AddFilter(audio_message_filter_); | 308 render_thread_->AddFilter(audio_message_filter_); |
| 308 } | 309 } |
| 309 | 310 |
| 311 // Recursively calls WillCloseFrame on every frame in the hierarchy. |
| 312 static void WillCloseFrameTree(RenderView* renderview, WebFrame* frame) { |
| 313 renderview->WillCloseFrame(renderview->webview(), frame); |
| 314 |
| 315 for (WebFrame* child = frame->GetFirstChild(); child; |
| 316 child = child->GetNextSibling()) { |
| 317 WillCloseFrameTree(renderview, child); |
| 318 } |
| 319 } |
| 320 |
| 321 void RenderView::Close() { |
| 322 if (webview() && webview()->GetMainFrame()) |
| 323 WillCloseFrameTree(this, webview()->GetMainFrame()); |
| 324 RenderWidget::Close(); |
| 325 } |
| 326 |
| 310 void RenderView::OnMessageReceived(const IPC::Message& message) { | 327 void RenderView::OnMessageReceived(const IPC::Message& message) { |
| 311 WebFrame* main_frame = webview() ? webview()->GetMainFrame() : NULL; | 328 WebFrame* main_frame = webview() ? webview()->GetMainFrame() : NULL; |
| 312 renderer_logging::ScopedActiveRenderingURLSetter url_setter( | 329 renderer_logging::ScopedActiveRenderingURLSetter url_setter( |
| 313 main_frame ? main_frame->GetURL() : GURL()); | 330 main_frame ? main_frame->GetURL() : GURL()); |
| 314 | 331 |
| 315 // If this is developer tools renderer intercept tools messages first. | 332 // If this is developer tools renderer intercept tools messages first. |
| 316 if (devtools_client_.get() && devtools_client_->OnMessageReceived(message)) | 333 if (devtools_client_.get() && devtools_client_->OnMessageReceived(message)) |
| 317 return; | 334 return; |
| 318 if (devtools_agent_.get() && devtools_agent_->OnMessageReceived(message)) | 335 if (devtools_agent_.get() && devtools_agent_->OnMessageReceived(message)) |
| 319 return; | 336 return; |
| (...skipping 1046 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1366 } | 1383 } |
| 1367 | 1384 |
| 1368 void RenderView::DocumentElementAvailable(WebFrame* frame) { | 1385 void RenderView::DocumentElementAvailable(WebFrame* frame) { |
| 1369 // TODO(mpcomplete): remove this before Chrome extensions ship. | 1386 // TODO(mpcomplete): remove this before Chrome extensions ship. |
| 1370 // HACK. This is a temporary workaround to allow cross-origin XHR for Chrome | 1387 // HACK. This is a temporary workaround to allow cross-origin XHR for Chrome |
| 1371 // extensions. It grants full access to every origin, when we really want | 1388 // extensions. It grants full access to every origin, when we really want |
| 1372 // to be able to restrict them more specifically. | 1389 // to be able to restrict them more specifically. |
| 1373 if (frame->GetURL().SchemeIs(chrome::kExtensionScheme)) | 1390 if (frame->GetURL().SchemeIs(chrome::kExtensionScheme)) |
| 1374 frame->GrantUniversalAccess(); | 1391 frame->GrantUniversalAccess(); |
| 1375 | 1392 |
| 1376 // Tell extensions to self-register their js contexts. | 1393 // Tell bindings that the DOM is ready. |
| 1377 // TODO(rafaelw): This is kind of gross. We need a way to call through | 1394 EventBindings::HandleDocumentReady(frame); |
| 1378 // the glue layer to retrieve the current v8::Context. | |
| 1379 if (frame->GetURL().SchemeIs(chrome::kExtensionScheme)) | |
| 1380 ExtensionProcessBindings::RegisterExtensionContext(frame); | |
| 1381 | 1395 |
| 1382 if (RenderThread::current()) // Will be NULL during unit tests. | 1396 if (RenderThread::current()) // Will be NULL during unit tests. |
| 1383 RenderThread::current()->user_script_slave()->InjectScripts( | 1397 RenderThread::current()->user_script_slave()->InjectScripts( |
| 1384 frame, UserScript::DOCUMENT_START); | 1398 frame, UserScript::DOCUMENT_START); |
| 1385 } | 1399 } |
| 1386 | 1400 |
| 1401 void RenderView::WillCloseFrame(WebView* webview, WebFrame* frame) { |
| 1402 EventBindings::HandleDocumentClose(frame); |
| 1403 } |
| 1404 |
| 1387 WindowOpenDisposition RenderView::DispositionForNavigationAction( | 1405 WindowOpenDisposition RenderView::DispositionForNavigationAction( |
| 1388 WebView* webview, | 1406 WebView* webview, |
| 1389 WebFrame* frame, | 1407 WebFrame* frame, |
| 1390 const WebRequest* request, | 1408 const WebRequest* request, |
| 1391 WebNavigationType type, | 1409 WebNavigationType type, |
| 1392 WindowOpenDisposition disposition, | 1410 WindowOpenDisposition disposition, |
| 1393 bool is_redirect) { | 1411 bool is_redirect) { |
| 1394 // A content initiated navigation may have originated from a link-click, | 1412 // A content initiated navigation may have originated from a link-click, |
| 1395 // script, drag-n-drop operation, etc. | 1413 // script, drag-n-drop operation, etc. |
| 1396 bool is_content_initiated = | 1414 bool is_content_initiated = |
| (...skipping 1440 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2837 scoped_ptr<PasswordForm> password_form( | 2855 scoped_ptr<PasswordForm> password_form( |
| 2838 PasswordFormDomManager::CreatePasswordForm(form)); | 2856 PasswordFormDomManager::CreatePasswordForm(form)); |
| 2839 if (password_form.get()) | 2857 if (password_form.get()) |
| 2840 password_forms.push_back(*password_form); | 2858 password_forms.push_back(*password_form); |
| 2841 } | 2859 } |
| 2842 } | 2860 } |
| 2843 | 2861 |
| 2844 if (!password_forms.empty()) | 2862 if (!password_forms.empty()) |
| 2845 Send(new ViewHostMsg_PasswordFormsSeen(routing_id_, password_forms)); | 2863 Send(new ViewHostMsg_PasswordFormsSeen(routing_id_, password_forms)); |
| 2846 } | 2864 } |
| OLD | NEW |