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/renderer/chrome_render_view_observer.h" | 5 #include "chrome/renderer/chrome_render_view_observer.h" |
6 | 6 |
7 #include "base/bind.h" | 7 #include "base/bind.h" |
8 #include "base/bind_helpers.h" | 8 #include "base/bind_helpers.h" |
9 #include "base/command_line.h" | 9 #include "base/command_line.h" |
10 #include "base/debug/trace_event.h" | 10 #include "base/debug/trace_event.h" |
(...skipping 10 matching lines...) Expand all Loading... |
21 #include "chrome/renderer/chrome_render_process_observer.h" | 21 #include "chrome/renderer/chrome_render_process_observer.h" |
22 #include "chrome/renderer/content_settings_observer.h" | 22 #include "chrome/renderer/content_settings_observer.h" |
23 #include "chrome/renderer/extensions/dispatcher.h" | 23 #include "chrome/renderer/extensions/dispatcher.h" |
24 #include "chrome/renderer/external_host_bindings.h" | 24 #include "chrome/renderer/external_host_bindings.h" |
25 #include "chrome/renderer/prerender/prerender_helper.h" | 25 #include "chrome/renderer/prerender/prerender_helper.h" |
26 #include "chrome/renderer/safe_browsing/phishing_classifier_delegate.h" | 26 #include "chrome/renderer/safe_browsing/phishing_classifier_delegate.h" |
27 #include "chrome/renderer/translate/translate_helper.h" | 27 #include "chrome/renderer/translate/translate_helper.h" |
28 #include "chrome/renderer/webview_color_overlay.h" | 28 #include "chrome/renderer/webview_color_overlay.h" |
29 #include "content/public/common/bindings_policy.h" | 29 #include "content/public/common/bindings_policy.h" |
30 #include "content/public/renderer/content_renderer_client.h" | 30 #include "content/public/renderer/content_renderer_client.h" |
| 31 #include "content/public/renderer/render_frame.h" |
31 #include "content/public/renderer/render_view.h" | 32 #include "content/public/renderer/render_view.h" |
32 #include "extensions/common/constants.h" | 33 #include "extensions/common/constants.h" |
33 #include "extensions/common/stack_frame.h" | 34 #include "extensions/common/stack_frame.h" |
34 #include "net/base/data_url.h" | 35 #include "net/base/data_url.h" |
35 #include "skia/ext/image_operations.h" | 36 #include "skia/ext/image_operations.h" |
36 #include "skia/ext/platform_canvas.h" | 37 #include "skia/ext/platform_canvas.h" |
37 #include "third_party/WebKit/public/platform/WebCString.h" | 38 #include "third_party/WebKit/public/platform/WebCString.h" |
38 #include "third_party/WebKit/public/platform/WebRect.h" | 39 #include "third_party/WebKit/public/platform/WebRect.h" |
39 #include "third_party/WebKit/public/platform/WebSize.h" | 40 #include "third_party/WebKit/public/platform/WebSize.h" |
40 #include "third_party/WebKit/public/platform/WebString.h" | 41 #include "third_party/WebKit/public/platform/WebString.h" |
(...skipping 274 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
315 #if defined(OS_ANDROID) | 316 #if defined(OS_ANDROID) |
316 IPC_MESSAGE_HANDLER(ChromeViewMsg_UpdateTopControlsState, | 317 IPC_MESSAGE_HANDLER(ChromeViewMsg_UpdateTopControlsState, |
317 OnUpdateTopControlsState) | 318 OnUpdateTopControlsState) |
318 IPC_MESSAGE_HANDLER(ChromeViewMsg_RetrieveWebappInformation, | 319 IPC_MESSAGE_HANDLER(ChromeViewMsg_RetrieveWebappInformation, |
319 OnRetrieveWebappInformation) | 320 OnRetrieveWebappInformation) |
320 #endif | 321 #endif |
321 IPC_MESSAGE_HANDLER(ChromeViewMsg_SetWindowFeatures, OnSetWindowFeatures) | 322 IPC_MESSAGE_HANDLER(ChromeViewMsg_SetWindowFeatures, OnSetWindowFeatures) |
322 IPC_MESSAGE_UNHANDLED(handled = false) | 323 IPC_MESSAGE_UNHANDLED(handled = false) |
323 IPC_END_MESSAGE_MAP() | 324 IPC_END_MESSAGE_MAP() |
324 | 325 |
325 // Filter only. | |
326 IPC_BEGIN_MESSAGE_MAP(ChromeRenderViewObserver, message) | |
327 IPC_MESSAGE_HANDLER(PrerenderMsg_SetIsPrerendering, OnSetIsPrerendering); | |
328 IPC_END_MESSAGE_MAP() | |
329 | |
330 return handled; | 326 return handled; |
331 } | 327 } |
332 | 328 |
333 void ChromeRenderViewObserver::OnWebUIJavaScript( | 329 void ChromeRenderViewObserver::OnWebUIJavaScript( |
334 const base::string16& frame_xpath, | 330 const base::string16& frame_xpath, |
335 const base::string16& jscript, | 331 const base::string16& jscript, |
336 int id, | 332 int id, |
337 bool notify_result) { | 333 bool notify_result) { |
338 webui_javascript_.reset(new WebUIJavaScript()); | 334 webui_javascript_.reset(new WebUIJavaScript()); |
339 webui_javascript_->frame_xpath = frame_xpath; | 335 webui_javascript_->frame_xpath = frame_xpath; |
(...skipping 416 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
756 } | 752 } |
757 | 753 |
758 void ChromeRenderViewObserver::didNotAllowPlugins(WebFrame* frame) { | 754 void ChromeRenderViewObserver::didNotAllowPlugins(WebFrame* frame) { |
759 content_settings_->DidNotAllowPlugins(); | 755 content_settings_->DidNotAllowPlugins(); |
760 } | 756 } |
761 | 757 |
762 void ChromeRenderViewObserver::didNotAllowScript(WebFrame* frame) { | 758 void ChromeRenderViewObserver::didNotAllowScript(WebFrame* frame) { |
763 content_settings_->DidNotAllowScript(); | 759 content_settings_->DidNotAllowScript(); |
764 } | 760 } |
765 | 761 |
766 void ChromeRenderViewObserver::OnSetIsPrerendering(bool is_prerendering) { | |
767 if (is_prerendering) { | |
768 DCHECK(!prerender::PrerenderHelper::Get(render_view())); | |
769 // The PrerenderHelper will destroy itself either after recording histograms | |
770 // or on destruction of the RenderView. | |
771 new prerender::PrerenderHelper(render_view()); | |
772 } | |
773 } | |
774 | |
775 void ChromeRenderViewObserver::DidStartLoading() { | 762 void ChromeRenderViewObserver::DidStartLoading() { |
776 if ((render_view()->GetEnabledBindings() & content::BINDINGS_POLICY_WEB_UI) && | 763 if ((render_view()->GetEnabledBindings() & content::BINDINGS_POLICY_WEB_UI) && |
777 webui_javascript_.get()) { | 764 webui_javascript_.get()) { |
778 render_view()->EvaluateScript(webui_javascript_->frame_xpath, | 765 render_view()->EvaluateScript(webui_javascript_->frame_xpath, |
779 webui_javascript_->jscript, | 766 webui_javascript_->jscript, |
780 webui_javascript_->id, | 767 webui_javascript_->id, |
781 webui_javascript_->notify_result); | 768 webui_javascript_->notify_result); |
782 webui_javascript_.reset(); | 769 webui_javascript_.reset(); |
783 } | 770 } |
784 } | 771 } |
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
871 if (main_frame->isViewSourceModeEnabled()) | 858 if (main_frame->isViewSourceModeEnabled()) |
872 return; | 859 return; |
873 | 860 |
874 // Don't index/capture pages that failed to load. This only checks the top | 861 // Don't index/capture pages that failed to load. This only checks the top |
875 // level frame so the thumbnail may contain a frame that failed to load. | 862 // level frame so the thumbnail may contain a frame that failed to load. |
876 WebDataSource* ds = main_frame->dataSource(); | 863 WebDataSource* ds = main_frame->dataSource(); |
877 if (ds && ds->hasUnreachableURL()) | 864 if (ds && ds->hasUnreachableURL()) |
878 return; | 865 return; |
879 | 866 |
880 // Don't index/capture pages that are being prerendered. | 867 // Don't index/capture pages that are being prerendered. |
881 if (prerender::PrerenderHelper::IsPrerendering(render_view())) | 868 if (prerender::PrerenderHelper::IsPrerendering( |
| 869 render_view()->GetMainRenderFrame())) { |
882 return; | 870 return; |
| 871 } |
883 | 872 |
884 // Retrieve the frame's full text (up to kMaxIndexChars), and pass it to the | 873 // Retrieve the frame's full text (up to kMaxIndexChars), and pass it to the |
885 // translate helper for language detection and possible translation. | 874 // translate helper for language detection and possible translation. |
886 base::string16 contents; | 875 base::string16 contents; |
887 base::TimeTicks capture_begin_time = base::TimeTicks::Now(); | 876 base::TimeTicks capture_begin_time = base::TimeTicks::Now(); |
888 CaptureText(main_frame, &contents); | 877 CaptureText(main_frame, &contents); |
889 UMA_HISTOGRAM_TIMES(kTranslateCaptureText, | 878 UMA_HISTOGRAM_TIMES(kTranslateCaptureText, |
890 base::TimeTicks::Now() - capture_begin_time); | 879 base::TimeTicks::Now() - capture_begin_time); |
891 if (translate_helper_) | 880 if (translate_helper_) |
892 translate_helper_->PageCaptured(page_id, contents); | 881 translate_helper_->PageCaptured(page_id, contents); |
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1003 WebElement element = node.to<WebElement>(); | 992 WebElement element = node.to<WebElement>(); |
1004 if (!element.hasTagName(tag_name)) | 993 if (!element.hasTagName(tag_name)) |
1005 continue; | 994 continue; |
1006 WebString value = element.getAttribute(attribute_name); | 995 WebString value = element.getAttribute(attribute_name); |
1007 if (value.isNull() || !LowerCaseEqualsASCII(value, "refresh")) | 996 if (value.isNull() || !LowerCaseEqualsASCII(value, "refresh")) |
1008 continue; | 997 continue; |
1009 return true; | 998 return true; |
1010 } | 999 } |
1011 return false; | 1000 return false; |
1012 } | 1001 } |
OLD | NEW |