Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(69)

Side by Side Diff: chrome/renderer/render_view.cc

Issue 6020017: Mac: Enable "Check Spelling While Typing" in Edit menu... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: '' Created 9 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« chrome/renderer/render_view.h ('K') | « chrome/renderer/render_view.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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/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 23 matching lines...) Expand all
34 #include "chrome/common/database_messages.h" 34 #include "chrome/common/database_messages.h"
35 #include "chrome/common/extensions/extension.h" 35 #include "chrome/common/extensions/extension.h"
36 #include "chrome/common/file_system/file_system_dispatcher.h" 36 #include "chrome/common/file_system/file_system_dispatcher.h"
37 #include "chrome/common/file_system/webfilesystem_callback_dispatcher.h" 37 #include "chrome/common/file_system/webfilesystem_callback_dispatcher.h"
38 #include "chrome/common/json_value_serializer.h" 38 #include "chrome/common/json_value_serializer.h"
39 #include "chrome/common/jstemplate_builder.h" 39 #include "chrome/common/jstemplate_builder.h"
40 #include "chrome/common/notification_service.h" 40 #include "chrome/common/notification_service.h"
41 #include "chrome/common/page_zoom.h" 41 #include "chrome/common/page_zoom.h"
42 #include "chrome/common/pepper_plugin_registry.h" 42 #include "chrome/common/pepper_plugin_registry.h"
43 #include "chrome/common/render_messages.h" 43 #include "chrome/common/render_messages.h"
44 #include "chrome/common/render_view_commands.h"
44 #include "chrome/common/renderer_preferences.h" 45 #include "chrome/common/renderer_preferences.h"
45 #include "chrome/common/thumbnail_score.h" 46 #include "chrome/common/thumbnail_score.h"
46 #include "chrome/common/url_constants.h" 47 #include "chrome/common/url_constants.h"
47 #include "chrome/common/web_apps.h" 48 #include "chrome/common/web_apps.h"
48 #include "chrome/common/window_container_type.h" 49 #include "chrome/common/window_container_type.h"
49 #include "chrome/renderer/about_handler.h" 50 #include "chrome/renderer/about_handler.h"
50 #include "chrome/renderer/audio_message_filter.h" 51 #include "chrome/renderer/audio_message_filter.h"
51 #include "chrome/renderer/autofill_helper.h" 52 #include "chrome/renderer/autofill_helper.h"
52 #include "chrome/renderer/automation/dom_automation_controller.h" 53 #include "chrome/renderer/automation/dom_automation_controller.h"
53 #include "chrome/renderer/blocked_plugin.h" 54 #include "chrome/renderer/blocked_plugin.h"
(...skipping 1572 matching lines...) Expand 10 before | Expand all | Expand 10 after
1626 UserMetricsRecordAction("SelectAll"); 1627 UserMetricsRecordAction("SelectAll");
1627 } 1628 }
1628 1629
1629 void RenderView::OnSetInitialFocus(bool reverse) { 1630 void RenderView::OnSetInitialFocus(bool reverse) {
1630 if (!webview()) 1631 if (!webview())
1631 return; 1632 return;
1632 webview()->setInitialFocus(reverse); 1633 webview()->setInitialFocus(reverse);
1633 } 1634 }
1634 1635
1635 void RenderView::OnScrollFocusedEditableNodeIntoView() { 1636 void RenderView::OnScrollFocusedEditableNodeIntoView() {
1636 if (!webview()) 1637 WebNode node;
1637 return; 1638 if (GetFocusedNode(node)) {
1638 WebFrame* focused_frame = webview()->focusedFrame(); 1639 if (IsEditableNode(node))
1639 if (focused_frame) { 1640 // TODO(varunjain): Change webkit API to scroll a particular node into
1640 WebDocument doc = focused_frame->document(); 1641 // view and use that API here instead.
1641 if (!doc.isNull()) { 1642 webview()->scrollFocusedNodeIntoView();
1642 WebNode node = doc.focusedNode();
1643 if (IsEditableNode(node))
1644 // TODO(varunjain): Change webkit API to scroll a particular node into
1645 // view and use that API here instead.
1646 webview()->scrollFocusedNodeIntoView();
1647 }
1648 } 1643 }
1649 } 1644 }
1650 1645
1651 /////////////////////////////////////////////////////////////////////////////// 1646 ///////////////////////////////////////////////////////////////////////////////
1652 1647
1653 void RenderView::SetContentSettings(const ContentSettings& settings) { 1648 void RenderView::SetContentSettings(const ContentSettings& settings) {
1654 current_content_settings_ = settings; 1649 current_content_settings_ = settings;
1655 } 1650 }
1656 1651
1657 // Tell the embedding application that the URL of the active page has changed 1652 // Tell the embedding application that the URL of the active page has changed
(...skipping 749 matching lines...) Expand 10 before | Expand all | Expand 10 after
2407 2402
2408 bool RenderView::isShowingSpellingUI() { 2403 bool RenderView::isShowingSpellingUI() {
2409 return spelling_panel_visible_; 2404 return spelling_panel_visible_;
2410 } 2405 }
2411 2406
2412 void RenderView::updateSpellingUIWithMisspelledWord(const WebString& word) { 2407 void RenderView::updateSpellingUIWithMisspelledWord(const WebString& word) {
2413 Send(new ViewHostMsg_UpdateSpellingPanelWithMisspelledWord(routing_id_, 2408 Send(new ViewHostMsg_UpdateSpellingPanelWithMisspelledWord(routing_id_,
2414 word)); 2409 word));
2415 } 2410 }
2416 2411
2412 void RenderView::continuousSpellCheckingEnabledStateChanged() {
2413 UpdateToggleSpellCheckCommandState();
2414 }
2415
2417 bool RenderView::runFileChooser( 2416 bool RenderView::runFileChooser(
2418 const WebKit::WebFileChooserParams& params, 2417 const WebKit::WebFileChooserParams& params,
2419 WebFileChooserCompletion* chooser_completion) { 2418 WebFileChooserCompletion* chooser_completion) {
2420 // Do not open the file dialog in a hidden RenderView. 2419 // Do not open the file dialog in a hidden RenderView.
2421 if (is_hidden()) 2420 if (is_hidden())
2422 return false; 2421 return false;
2423 ViewHostMsg_RunFileChooser_Params ipc_params; 2422 ViewHostMsg_RunFileChooser_Params ipc_params;
2424 if (params.directory) 2423 if (params.directory)
2425 ipc_params.mode = ViewHostMsg_RunFileChooser_Params::OpenFolder; 2424 ipc_params.mode = ViewHostMsg_RunFileChooser_Params::OpenFolder;
2426 else if (params.multiSelect) 2425 else if (params.multiSelect)
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after
2533 // any existing pending sends. 2532 // any existing pending sends.
2534 pending_target_url_ = latest_url; 2533 pending_target_url_ = latest_url;
2535 target_url_status_ = TARGET_PENDING; 2534 target_url_status_ = TARGET_PENDING;
2536 } else { 2535 } else {
2537 Send(new ViewHostMsg_UpdateTargetURL(routing_id_, page_id_, latest_url)); 2536 Send(new ViewHostMsg_UpdateTargetURL(routing_id_, page_id_, latest_url));
2538 target_url_ = latest_url; 2537 target_url_ = latest_url;
2539 target_url_status_ = TARGET_INFLIGHT; 2538 target_url_status_ = TARGET_INFLIGHT;
2540 } 2539 }
2541 } 2540 }
2542 2541
2542 void RenderView::UpdateToggleSpellCheckCommandState() {
2543 bool is_enabled = false;
2544 WebNode node;
2545 if (GetFocusedNode(node))
2546 is_enabled = IsEditableNode(node);
2547
2548 CommandCheckedState checked_state = COMMAND_CHECKED_STATE_UNCHECKED;
2549 if (is_enabled && webview()) {
2550 WebFrame* frame = webview()->focusedFrame();
2551 if (frame->isContinuousSpellCheckingEnabled()) {
brettw 2011/01/13 05:59:55 Use {} for single-line conditionals consistently.
sail 2011/01/13 23:38:15 Done.
2552 checked_state = COMMAND_CHECKED_STATE_CHECKED;
2553 }
2554 }
2555
2556 Send(new ViewHostMsg_CommandStateChanged(
2557 routing_id_,
2558 RENDER_VIEW_COMMAND_TOGGLE_SPELL_CHECK,
2559 is_enabled,
2560 checked_state));
2561 }
2562
2543 void RenderView::StartNavStateSyncTimerIfNecessary() { 2563 void RenderView::StartNavStateSyncTimerIfNecessary() {
2544 int delay; 2564 int delay;
2545 if (send_content_state_immediately_) 2565 if (send_content_state_immediately_)
2546 delay = 0; 2566 delay = 0;
2547 else if (is_hidden()) 2567 else if (is_hidden())
2548 delay = kDelaySecondsForContentStateSyncHidden; 2568 delay = kDelaySecondsForContentStateSyncHidden;
2549 else 2569 else
2550 delay = kDelaySecondsForContentStateSync; 2570 delay = kDelaySecondsForContentStateSync;
2551 2571
2552 if (nav_state_sync_timer_.IsRunning()) { 2572 if (nav_state_sync_timer_.IsRunning()) {
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
2609 void RenderView::focusedNodeChanged(const WebNode& node) { 2629 void RenderView::focusedNodeChanged(const WebNode& node) {
2610 Send(new ViewHostMsg_FocusedNodeChanged(routing_id_, IsEditableNode(node))); 2630 Send(new ViewHostMsg_FocusedNodeChanged(routing_id_, IsEditableNode(node)));
2611 2631
2612 if (WebAccessibilityCache::accessibilityEnabled() && node.isNull()) { 2632 if (WebAccessibilityCache::accessibilityEnabled() && node.isNull()) {
2613 // TODO(ctguil): Make WebKit send this notification. 2633 // TODO(ctguil): Make WebKit send this notification.
2614 // When focus is cleared notify accessibility that the document is focused. 2634 // When focus is cleared notify accessibility that the document is focused.
2615 postAccessibilityNotification( 2635 postAccessibilityNotification(
2616 webview()->accessibilityObject(), 2636 webview()->accessibilityObject(),
2617 WebKit::WebAccessibilityNotificationFocusedUIElementChanged); 2637 WebKit::WebAccessibilityNotificationFocusedUIElementChanged);
2618 } 2638 }
2639
2640 UpdateToggleSpellCheckCommandState();
2619 } 2641 }
2620 2642
2621 void RenderView::navigateBackForwardSoon(int offset) { 2643 void RenderView::navigateBackForwardSoon(int offset) {
2622 Send(new ViewHostMsg_GoToEntryAtOffset(routing_id_, offset)); 2644 Send(new ViewHostMsg_GoToEntryAtOffset(routing_id_, offset));
2623 } 2645 }
2624 2646
2625 int RenderView::historyBackListCount() { 2647 int RenderView::historyBackListCount() {
2626 return history_list_offset_ < 0 ? 0 : history_list_offset_; 2648 return history_list_offset_ < 0 ? 0 : history_list_offset_;
2627 } 2649 }
2628 2650
(...skipping 1952 matching lines...) Expand 10 before | Expand all | Expand 10 after
4581 xpath_remaining.erase(0, delim_pos + 1); 4603 xpath_remaining.erase(0, delim_pos + 1);
4582 } else { 4604 } else {
4583 xpath_remaining.swap(xpath_child); 4605 xpath_remaining.swap(xpath_child);
4584 } 4606 }
4585 frame = frame->findChildByExpression(WideToUTF16Hack(xpath_child)); 4607 frame = frame->findChildByExpression(WideToUTF16Hack(xpath_child));
4586 } 4608 }
4587 4609
4588 return frame; 4610 return frame;
4589 } 4611 }
4590 4612
4613 bool RenderView::GetFocusedNode(WebNode& node) const {
4614 if (!webview())
4615 return false;
4616 WebFrame* focused_frame = webview()->focusedFrame();
4617 if (focused_frame) {
4618 WebDocument doc = focused_frame->document();
4619 if (!doc.isNull()) {
4620 node = doc.focusedNode();
4621 return true;
4622 }
4623 }
4624
4625 return false;
4626 }
4627
4591 void RenderView::SetSuggestions(const std::vector<std::string>& suggestions) { 4628 void RenderView::SetSuggestions(const std::vector<std::string>& suggestions) {
4592 // Explicitly allow empty vector to be sent to the browser. 4629 // Explicitly allow empty vector to be sent to the browser.
4593 Send(new ViewHostMsg_SetSuggestions(routing_id_, page_id_, suggestions)); 4630 Send(new ViewHostMsg_SetSuggestions(routing_id_, page_id_, suggestions));
4594 } 4631 }
4595 4632
4596 void RenderView::EvaluateScript(const string16& frame_xpath, 4633 void RenderView::EvaluateScript(const string16& frame_xpath,
4597 const string16& script, 4634 const string16& script,
4598 int id, 4635 int id,
4599 bool notify_result) { 4636 bool notify_result) {
4600 v8::Handle<v8::Value> result; 4637 v8::Handle<v8::Value> result;
(...skipping 1186 matching lines...) Expand 10 before | Expand all | Expand 10 after
5787 } 5824 }
5788 #endif 5825 #endif
5789 5826
5790 void RenderView::OnJavaScriptStressTestControl(int cmd, int param) { 5827 void RenderView::OnJavaScriptStressTestControl(int cmd, int param) {
5791 if (cmd == kJavaScriptStressTestSetStressRunType) { 5828 if (cmd == kJavaScriptStressTestSetStressRunType) {
5792 v8::Testing::SetStressRunType(static_cast<v8::Testing::StressType>(param)); 5829 v8::Testing::SetStressRunType(static_cast<v8::Testing::StressType>(param));
5793 } else if (cmd == kJavaScriptStressTestPrepareStressRun) { 5830 } else if (cmd == kJavaScriptStressTestPrepareStressRun) {
5794 v8::Testing::PrepareStressRun(param); 5831 v8::Testing::PrepareStressRun(param);
5795 } 5832 }
5796 } 5833 }
OLDNEW
« chrome/renderer/render_view.h ('K') | « chrome/renderer/render_view.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698