OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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/command_line.h" | 7 #include "base/command_line.h" |
8 #include "base/message_loop.h" | 8 #include "base/message_loop.h" |
9 #include "base/metrics/histogram.h" | 9 #include "base/metrics/histogram.h" |
10 #include "base/string_util.h" | 10 #include "base/string_util.h" |
(...skipping 140 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
151 case WebIconURL::TypeInvalid: | 151 case WebIconURL::TypeInvalid: |
152 return FaviconURL::INVALID_ICON; | 152 return FaviconURL::INVALID_ICON; |
153 } | 153 } |
154 return FaviconURL::INVALID_ICON; | 154 return FaviconURL::INVALID_ICON; |
155 } | 155 } |
156 | 156 |
157 ChromeRenderViewObserver::ChromeRenderViewObserver( | 157 ChromeRenderViewObserver::ChromeRenderViewObserver( |
158 RenderView* render_view, | 158 RenderView* render_view, |
159 ContentSettingsObserver* content_settings, | 159 ContentSettingsObserver* content_settings, |
160 ExtensionDispatcher* extension_dispatcher, | 160 ExtensionDispatcher* extension_dispatcher, |
161 TranslateHelper* translate_helper, | 161 TranslateHelper* translate_helper) |
162 safe_browsing::PhishingClassifierDelegate* phishing_classifier) | |
163 : RenderViewObserver(render_view), | 162 : RenderViewObserver(render_view), |
164 content_settings_(content_settings), | 163 content_settings_(content_settings), |
165 extension_dispatcher_(extension_dispatcher), | 164 extension_dispatcher_(extension_dispatcher), |
166 translate_helper_(translate_helper), | 165 translate_helper_(translate_helper), |
167 phishing_classifier_(phishing_classifier), | 166 phishing_classifier_(NULL), |
168 last_indexed_page_id_(-1), | 167 last_indexed_page_id_(-1), |
169 allow_displaying_insecure_content_(false), | 168 allow_displaying_insecure_content_(false), |
170 allow_running_insecure_content_(false), | 169 allow_running_insecure_content_(false), |
171 ALLOW_THIS_IN_INITIALIZER_LIST(page_info_method_factory_(this)) { | 170 ALLOW_THIS_IN_INITIALIZER_LIST(page_info_method_factory_(this)) { |
172 const CommandLine& command_line = *CommandLine::ForCurrentProcess(); | 171 const CommandLine& command_line = *CommandLine::ForCurrentProcess(); |
173 if (command_line.HasSwitch(switches::kDomAutomationController)) { | 172 if (command_line.HasSwitch(switches::kDomAutomationController)) { |
174 int old_bindings = render_view->enabled_bindings(); | 173 int old_bindings = render_view->enabled_bindings(); |
175 render_view->set_enabled_bindings( | 174 render_view->set_enabled_bindings( |
176 old_bindings |= BindingsPolicy::DOM_AUTOMATION); | 175 old_bindings |= BindingsPolicy::DOM_AUTOMATION); |
177 } | 176 } |
178 render_view->webview()->setPermissionClient(this); | 177 render_view->webview()->setPermissionClient(this); |
| 178 if (!command_line.HasSwitch(switches::kDisableClientSidePhishingDetection)) |
| 179 OnSetClientSidePhishingDetection(true); |
179 } | 180 } |
180 | 181 |
181 ChromeRenderViewObserver::~ChromeRenderViewObserver() { | 182 ChromeRenderViewObserver::~ChromeRenderViewObserver() { |
182 } | 183 } |
183 | 184 |
184 bool ChromeRenderViewObserver::OnMessageReceived(const IPC::Message& message) { | 185 bool ChromeRenderViewObserver::OnMessageReceived(const IPC::Message& message) { |
185 bool handled = true; | 186 bool handled = true; |
186 IPC_BEGIN_MESSAGE_MAP(ChromeRenderViewObserver, message) | 187 IPC_BEGIN_MESSAGE_MAP(ChromeRenderViewObserver, message) |
187 IPC_MESSAGE_HANDLER(ViewMsg_CaptureSnapshot, OnCaptureSnapshot) | 188 IPC_MESSAGE_HANDLER(ViewMsg_CaptureSnapshot, OnCaptureSnapshot) |
188 IPC_MESSAGE_HANDLER(ViewMsg_HandleMessageFromExternalHost, | 189 IPC_MESSAGE_HANDLER(ViewMsg_HandleMessageFromExternalHost, |
189 OnHandleMessageFromExternalHost) | 190 OnHandleMessageFromExternalHost) |
190 IPC_MESSAGE_HANDLER(ViewMsg_JavaScriptStressTestControl, | 191 IPC_MESSAGE_HANDLER(ViewMsg_JavaScriptStressTestControl, |
191 OnJavaScriptStressTestControl) | 192 OnJavaScriptStressTestControl) |
192 IPC_MESSAGE_HANDLER(ViewMsg_GetAllSavableResourceLinksForCurrentPage, | 193 IPC_MESSAGE_HANDLER(ViewMsg_GetAllSavableResourceLinksForCurrentPage, |
193 OnGetAllSavableResourceLinksForCurrentPage) | 194 OnGetAllSavableResourceLinksForCurrentPage) |
194 IPC_MESSAGE_HANDLER( | 195 IPC_MESSAGE_HANDLER( |
195 ViewMsg_GetSerializedHtmlDataForCurrentPageWithLocalLinks, | 196 ViewMsg_GetSerializedHtmlDataForCurrentPageWithLocalLinks, |
196 OnGetSerializedHtmlDataForCurrentPageWithLocalLinks) | 197 OnGetSerializedHtmlDataForCurrentPageWithLocalLinks) |
197 IPC_MESSAGE_HANDLER(IconMsg_DownloadFavicon, OnDownloadFavicon) | 198 IPC_MESSAGE_HANDLER(IconMsg_DownloadFavicon, OnDownloadFavicon) |
198 IPC_MESSAGE_HANDLER(ViewMsg_EnableViewSourceMode, OnEnableViewSourceMode) | 199 IPC_MESSAGE_HANDLER(ViewMsg_EnableViewSourceMode, OnEnableViewSourceMode) |
199 IPC_MESSAGE_HANDLER(ViewMsg_SetAllowDisplayingInsecureContent, | 200 IPC_MESSAGE_HANDLER(ViewMsg_SetAllowDisplayingInsecureContent, |
200 OnSetAllowDisplayingInsecureContent) | 201 OnSetAllowDisplayingInsecureContent) |
201 IPC_MESSAGE_HANDLER(ViewMsg_SetAllowRunningInsecureContent, | 202 IPC_MESSAGE_HANDLER(ViewMsg_SetAllowRunningInsecureContent, |
202 OnSetAllowRunningInsecureContent) | 203 OnSetAllowRunningInsecureContent) |
| 204 IPC_MESSAGE_HANDLER(ViewMsg_SetClientSidePhishingDetection, |
| 205 OnSetClientSidePhishingDetection) |
203 IPC_MESSAGE_UNHANDLED(handled = false) | 206 IPC_MESSAGE_UNHANDLED(handled = false) |
204 IPC_END_MESSAGE_MAP() | 207 IPC_END_MESSAGE_MAP() |
205 | 208 |
206 // Filter only. | 209 // Filter only. |
207 IPC_BEGIN_MESSAGE_MAP(ChromeRenderViewObserver, message) | 210 IPC_BEGIN_MESSAGE_MAP(ChromeRenderViewObserver, message) |
208 IPC_MESSAGE_HANDLER(ViewMsg_Navigate, OnNavigate) | 211 IPC_MESSAGE_HANDLER(ViewMsg_Navigate, OnNavigate) |
209 IPC_MESSAGE_HANDLER(ViewMsg_SetIsPrerendering, OnSetIsPrerendering); | 212 IPC_MESSAGE_HANDLER(ViewMsg_SetIsPrerendering, OnSetIsPrerendering); |
210 IPC_END_MESSAGE_MAP() | 213 IPC_END_MESSAGE_MAP() |
211 | 214 |
212 return handled; | 215 return handled; |
(...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
332 WebFrame* main_frame = render_view()->webview()->mainFrame(); | 335 WebFrame* main_frame = render_view()->webview()->mainFrame(); |
333 if (main_frame) | 336 if (main_frame) |
334 main_frame->reload(); | 337 main_frame->reload(); |
335 } | 338 } |
336 | 339 |
337 void ChromeRenderViewObserver::OnSetAllowRunningInsecureContent(bool allow) { | 340 void ChromeRenderViewObserver::OnSetAllowRunningInsecureContent(bool allow) { |
338 allow_running_insecure_content_ = allow; | 341 allow_running_insecure_content_ = allow; |
339 OnSetAllowDisplayingInsecureContent(allow); | 342 OnSetAllowDisplayingInsecureContent(allow); |
340 } | 343 } |
341 | 344 |
| 345 void ChromeRenderViewObserver::OnSetClientSidePhishingDetection( |
| 346 bool enable_phishing_detection) { |
| 347 #if !defined(OS_CHROMEOS) || !defined(ENABLE_SAFE_BROWSING) |
| 348 phishing_classifier_ = enable_phishing_detection ? |
| 349 safe_browsing::PhishingClassifierDelegate::Create( |
| 350 render_view(), NULL) : |
| 351 NULL; |
| 352 #endif |
| 353 } |
| 354 |
342 void ChromeRenderViewObserver::didSerializeDataForFrame( | 355 void ChromeRenderViewObserver::didSerializeDataForFrame( |
343 const WebURL& frame_url, | 356 const WebURL& frame_url, |
344 const WebCString& data, | 357 const WebCString& data, |
345 WebPageSerializerClient::PageSerializationStatus status) { | 358 WebPageSerializerClient::PageSerializationStatus status) { |
346 Send(new ViewHostMsg_SendSerializedHtmlData( | 359 Send(new ViewHostMsg_SendSerializedHtmlData( |
347 routing_id(), | 360 routing_id(), |
348 frame_url, | 361 frame_url, |
349 data.data(), | 362 data.data(), |
350 static_cast<int32>(status))); | 363 static_cast<int32>(status))); |
351 } | 364 } |
(...skipping 490 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
842 if (net::DataURL::Parse(url, &mime_type, &char_set, &data) && !data.empty()) { | 855 if (net::DataURL::Parse(url, &mime_type, &char_set, &data) && !data.empty()) { |
843 // Decode the favicon using WebKit's image decoder. | 856 // Decode the favicon using WebKit's image decoder. |
844 webkit_glue::ImageDecoder decoder(gfx::Size(kFaviconSize, kFaviconSize)); | 857 webkit_glue::ImageDecoder decoder(gfx::Size(kFaviconSize, kFaviconSize)); |
845 const unsigned char* src_data = | 858 const unsigned char* src_data = |
846 reinterpret_cast<const unsigned char*>(&data[0]); | 859 reinterpret_cast<const unsigned char*>(&data[0]); |
847 | 860 |
848 return decoder.Decode(src_data, data.size()); | 861 return decoder.Decode(src_data, data.size()); |
849 } | 862 } |
850 return SkBitmap(); | 863 return SkBitmap(); |
851 } | 864 } |
OLD | NEW |