| OLD | NEW |
| 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 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 <cmath> | 8 #include <cmath> |
| 9 #include <string> | 9 #include <string> |
| 10 #include <vector> | 10 #include <vector> |
| (...skipping 499 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 510 ALLOW_THIS_IN_INITIALIZER_LIST(page_info_method_factory_(this)), | 510 ALLOW_THIS_IN_INITIALIZER_LIST(page_info_method_factory_(this)), |
| 511 ALLOW_THIS_IN_INITIALIZER_LIST(autofill_method_factory_(this)), | 511 ALLOW_THIS_IN_INITIALIZER_LIST(autofill_method_factory_(this)), |
| 512 ALLOW_THIS_IN_INITIALIZER_LIST(accessibility_method_factory_(this)), | 512 ALLOW_THIS_IN_INITIALIZER_LIST(accessibility_method_factory_(this)), |
| 513 ALLOW_THIS_IN_INITIALIZER_LIST(translate_helper_(this)), | 513 ALLOW_THIS_IN_INITIALIZER_LIST(translate_helper_(this)), |
| 514 ALLOW_THIS_IN_INITIALIZER_LIST(cookie_jar_(this)), | 514 ALLOW_THIS_IN_INITIALIZER_LIST(cookie_jar_(this)), |
| 515 ALLOW_THIS_IN_INITIALIZER_LIST( | 515 ALLOW_THIS_IN_INITIALIZER_LIST( |
| 516 notification_provider_(new NotificationProvider(this))), | 516 notification_provider_(new NotificationProvider(this))), |
| 517 accessibility_ack_pending_(false), | 517 accessibility_ack_pending_(false), |
| 518 pending_app_icon_requests_(0), | 518 pending_app_icon_requests_(0), |
| 519 session_storage_namespace_id_(session_storage_namespace_id), | 519 session_storage_namespace_id_(session_storage_namespace_id), |
| 520 decrement_shared_popup_at_destruction_(false) { | 520 decrement_shared_popup_at_destruction_(false), |
| 521 custom_menu_listener_(NULL) { |
| 521 #if defined(OS_MACOSX) | 522 #if defined(OS_MACOSX) |
| 522 // On Mac, the select popups are rendered by the browser. | 523 // On Mac, the select popups are rendered by the browser. |
| 523 // Note that we don't do this in RenderMain otherwise this would not be called | 524 // Note that we don't do this in RenderMain otherwise this would not be called |
| 524 // in single-process mode. | 525 // in single-process mode. |
| 525 WebKit::WebView::setUseExternalPopupMenus(true); | 526 WebKit::WebView::setUseExternalPopupMenus(true); |
| 526 #endif | 527 #endif |
| 527 password_autocomplete_manager_.reset(new PasswordAutocompleteManager(this)); | 528 password_autocomplete_manager_.reset(new PasswordAutocompleteManager(this)); |
| 528 autofill_helper_.reset(new AutoFillHelper(this)); | 529 autofill_helper_.reset(new AutoFillHelper(this)); |
| 529 page_click_tracker_.reset(new PageClickTracker(this)); | 530 page_click_tracker_.reset(new PageClickTracker(this)); |
| 530 // Note that the order of insertion of the listeners is important. | 531 // Note that the order of insertion of the listeners is important. |
| (...skipping 269 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 800 if (!found || !info.enabled) | 801 if (!found || !info.enabled) |
| 801 return NULL; | 802 return NULL; |
| 802 scoped_refptr<pepper::PluginModule> pepper_module( | 803 scoped_refptr<pepper::PluginModule> pepper_module( |
| 803 PepperPluginRegistry::GetInstance()->GetModule(info.path)); | 804 PepperPluginRegistry::GetInstance()->GetModule(info.path)); |
| 804 if (pepper_module) | 805 if (pepper_module) |
| 805 return CreatePepperPlugin(frame, params, info.path, pepper_module.get()); | 806 return CreatePepperPlugin(frame, params, info.path, pepper_module.get()); |
| 806 else | 807 else |
| 807 return CreateNPAPIPlugin(frame, params, info.path, mime_type); | 808 return CreateNPAPIPlugin(frame, params, info.path, mime_type); |
| 808 } | 809 } |
| 809 | 810 |
| 811 void RenderView::CustomMenuListenerInstall(CustomMenuListener* listening) { |
| 812 custom_menu_listener_ = listening; |
| 813 } |
| 814 |
| 815 void RenderView::CustomMenuListenerDestroyed(CustomMenuListener* dead) { |
| 816 if (custom_menu_listener_ == dead) |
| 817 custom_menu_listener_ = NULL; |
| 818 } |
| 819 |
| 810 void RenderView::RegisterPluginDelegate(WebPluginDelegateProxy* delegate) { | 820 void RenderView::RegisterPluginDelegate(WebPluginDelegateProxy* delegate) { |
| 811 plugin_delegates_.insert(delegate); | 821 plugin_delegates_.insert(delegate); |
| 812 // If the renderer is visible, set initial visibility and focus state. | 822 // If the renderer is visible, set initial visibility and focus state. |
| 813 if (!is_hidden()) { | 823 if (!is_hidden()) { |
| 814 #if defined(OS_MACOSX) | 824 #if defined(OS_MACOSX) |
| 815 delegate->SetContainerVisibility(true); | 825 delegate->SetContainerVisibility(true); |
| 816 if (webview() && webview()->isActive()) | 826 if (webview() && webview()->isActive()) |
| 817 delegate->SetWindowFocus(true); | 827 delegate->SetWindowFocus(true); |
| 818 #endif | 828 #endif |
| 819 } | 829 } |
| (...skipping 1564 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2384 // response as RunJavaScriptMessage. | 2394 // response as RunJavaScriptMessage. |
| 2385 std::wstring ignored_result; | 2395 std::wstring ignored_result; |
| 2386 SendAndRunNestedMessageLoop(new ViewHostMsg_RunBeforeUnloadConfirm( | 2396 SendAndRunNestedMessageLoop(new ViewHostMsg_RunBeforeUnloadConfirm( |
| 2387 routing_id_, frame->url(), UTF16ToWideHack(message), &success, | 2397 routing_id_, frame->url(), UTF16ToWideHack(message), &success, |
| 2388 &ignored_result)); | 2398 &ignored_result)); |
| 2389 return success; | 2399 return success; |
| 2390 } | 2400 } |
| 2391 | 2401 |
| 2392 void RenderView::showContextMenu( | 2402 void RenderView::showContextMenu( |
| 2393 WebFrame* frame, const WebContextMenuData& data) { | 2403 WebFrame* frame, const WebContextMenuData& data) { |
| 2404 custom_menu_listener_ = NULL; |
| 2394 ContextMenuParams params = ContextMenuParams(data); | 2405 ContextMenuParams params = ContextMenuParams(data); |
| 2395 if (!params.misspelled_word.empty() && RenderThread::current()) { | 2406 if (!params.misspelled_word.empty() && RenderThread::current()) { |
| 2396 int misspelled_offset, misspelled_length; | 2407 int misspelled_offset, misspelled_length; |
| 2397 bool spelled_right = RenderThread::current()->spellchecker()-> | 2408 bool spelled_right = RenderThread::current()->spellchecker()-> |
| 2398 SpellCheckWord( | 2409 SpellCheckWord( |
| 2399 params.misspelled_word.c_str(), params.misspelled_word.size(), | 2410 params.misspelled_word.c_str(), params.misspelled_word.size(), |
| 2400 document_tag_, | 2411 document_tag_, |
| 2401 &misspelled_offset, &misspelled_length, | 2412 &misspelled_offset, &misspelled_length, |
| 2402 ¶ms.dictionary_suggestions); | 2413 ¶ms.dictionary_suggestions); |
| 2403 if (spelled_right) | 2414 if (spelled_right) |
| (...skipping 2279 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4683 void RenderView::OnUpdateWebPreferences(const WebPreferences& prefs) { | 4694 void RenderView::OnUpdateWebPreferences(const WebPreferences& prefs) { |
| 4684 webkit_preferences_ = prefs; | 4695 webkit_preferences_ = prefs; |
| 4685 webkit_preferences_.Apply(webview()); | 4696 webkit_preferences_.Apply(webview()); |
| 4686 } | 4697 } |
| 4687 | 4698 |
| 4688 void RenderView::OnSetAltErrorPageURL(const GURL& url) { | 4699 void RenderView::OnSetAltErrorPageURL(const GURL& url) { |
| 4689 alternate_error_page_url_ = url; | 4700 alternate_error_page_url_ = url; |
| 4690 } | 4701 } |
| 4691 | 4702 |
| 4692 void RenderView::OnCustomContextMenuAction(unsigned action) { | 4703 void RenderView::OnCustomContextMenuAction(unsigned action) { |
| 4693 webview()->performCustomContextMenuAction(action); | 4704 if (custom_menu_listener_) |
| 4705 custom_menu_listener_->MenuItemSelected(action); |
| 4706 else |
| 4707 webview()->performCustomContextMenuAction(action); |
| 4694 } | 4708 } |
| 4695 | 4709 |
| 4696 void RenderView::OnTranslatePage(int page_id, | 4710 void RenderView::OnTranslatePage(int page_id, |
| 4697 const std::string& translate_script, | 4711 const std::string& translate_script, |
| 4698 const std::string& source_lang, | 4712 const std::string& source_lang, |
| 4699 const std::string& target_lang) { | 4713 const std::string& target_lang) { |
| 4700 translate_helper_.TranslatePage(page_id, source_lang, target_lang, | 4714 translate_helper_.TranslatePage(page_id, source_lang, target_lang, |
| 4701 translate_script); | 4715 translate_script); |
| 4702 } | 4716 } |
| 4703 | 4717 |
| (...skipping 981 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5685 external_popup_menu_.reset(); | 5699 external_popup_menu_.reset(); |
| 5686 } | 5700 } |
| 5687 #endif | 5701 #endif |
| 5688 | 5702 |
| 5689 void RenderView::AddErrorToRootConsole(const string16& message) { | 5703 void RenderView::AddErrorToRootConsole(const string16& message) { |
| 5690 if (webview() && webview()->mainFrame()) { | 5704 if (webview() && webview()->mainFrame()) { |
| 5691 webview()->mainFrame()->addMessageToConsole( | 5705 webview()->mainFrame()->addMessageToConsole( |
| 5692 WebConsoleMessage(WebConsoleMessage::LevelError, message)); | 5706 WebConsoleMessage(WebConsoleMessage::LevelError, message)); |
| 5693 } | 5707 } |
| 5694 } | 5708 } |
| OLD | NEW |