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

Side by Side Diff: content/renderer/input/frame_input_handler_impl.cc

Issue 2951053005: Add Mojo API for Blink hit testing (Closed)
Patch Set: Created 3 years, 6 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
OLDNEW
1 // Copyright 2017 The Chromium Authors. All rights reserved. 1 // Copyright 2017 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 "content/renderer/input/frame_input_handler_impl.h" 5 #include "content/renderer/input/frame_input_handler_impl.h"
6 6
7 #include <utility> 7 #include <utility>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/debug/stack_trace.h" 10 #include "base/debug/stack_trace.h"
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
47 void FrameInputHandlerImpl::CreateMojoService( 47 void FrameInputHandlerImpl::CreateMojoService(
48 base::WeakPtr<RenderFrameImpl> render_frame, 48 base::WeakPtr<RenderFrameImpl> render_frame,
49 const service_manager::BindSourceInfo& source_info, 49 const service_manager::BindSourceInfo& source_info,
50 mojom::FrameInputHandlerRequest request) { 50 mojom::FrameInputHandlerRequest request) {
51 DCHECK(render_frame); 51 DCHECK(render_frame);
52 52
53 // Owns itself. Will be deleted when message pipe is destroyed. 53 // Owns itself. Will be deleted when message pipe is destroyed.
54 new FrameInputHandlerImpl(render_frame, std::move(request)); 54 new FrameInputHandlerImpl(render_frame, std::move(request));
55 } 55 }
56 56
57 void FrameInputHandlerImpl::RunOnMainThread(const base::Closure& closure) { 57 void FrameInputHandlerImpl::RunOnMainThread(base::OnceClosure closure) {
58 if (input_event_queue_) { 58 if (input_event_queue_) {
59 input_event_queue_->QueueClosure(closure); 59 input_event_queue_->QueueClosure(std::move(closure));
60 } else { 60 } else {
61 closure.Run(); 61 std::move(closure).Run();
62 } 62 }
63 } 63 }
64 64
65 void FrameInputHandlerImpl::SetCompositionFromExistingText( 65 void FrameInputHandlerImpl::SetCompositionFromExistingText(
66 int32_t start, 66 int32_t start,
67 int32_t end, 67 int32_t end,
68 const std::vector<ui::CompositionUnderline>& ui_underlines) { 68 const std::vector<ui::CompositionUnderline>& ui_underlines) {
69 if (!main_thread_task_runner_->BelongsToCurrentThread()) { 69 if (!main_thread_task_runner_->BelongsToCurrentThread()) {
70 RunOnMainThread( 70 RunOnMainThread(
71 base::Bind(&FrameInputHandlerImpl::SetCompositionFromExistingText, 71 base::Bind(&FrameInputHandlerImpl::SetCompositionFromExistingText,
(...skipping 168 matching lines...) Expand 10 before | Expand all | Expand 10 after
240 RunOnMainThread(base::Bind(&FrameInputHandlerImpl::ExecuteCommandOnMainThread, 240 RunOnMainThread(base::Bind(&FrameInputHandlerImpl::ExecuteCommandOnMainThread,
241 weak_this_, "Delete", UpdateState::kNone)); 241 weak_this_, "Delete", UpdateState::kNone));
242 } 242 }
243 243
244 void FrameInputHandlerImpl::SelectAll() { 244 void FrameInputHandlerImpl::SelectAll() {
245 RunOnMainThread(base::Bind(&FrameInputHandlerImpl::ExecuteCommandOnMainThread, 245 RunOnMainThread(base::Bind(&FrameInputHandlerImpl::ExecuteCommandOnMainThread,
246 weak_this_, "SelectAll", 246 weak_this_, "SelectAll",
247 UpdateState::kIsSelectingRange)); 247 UpdateState::kIsSelectingRange));
248 } 248 }
249 249
250 void FrameInputHandlerImpl::HitTestFrameAt(const gfx::PointF& point,
251 HitTestFrameAtCallback callback) {
252 RunOnMainThread(base::BindOnce(&FrameInputHandlerImpl::HitTestOnMainThread,
253 weak_this_, point, std::move(callback)));
254 }
255
256 void FrameInputHandlerImpl::HitTestOnMainThread(
257 const gfx::PointF& point,
258 HitTestFrameAtCallback callback) {
259 std::move(callback).Run(
260 render_frame_->GetRenderWidget()->HitTestFrameAt(point));
261 }
262
250 void FrameInputHandlerImpl::CollapseSelection() { 263 void FrameInputHandlerImpl::CollapseSelection() {
251 if (!main_thread_task_runner_->BelongsToCurrentThread()) { 264 if (!main_thread_task_runner_->BelongsToCurrentThread()) {
252 RunOnMainThread( 265 RunOnMainThread(
253 base::Bind(&FrameInputHandlerImpl::CollapseSelection, weak_this_)); 266 base::Bind(&FrameInputHandlerImpl::CollapseSelection, weak_this_));
254 return; 267 return;
255 } 268 }
256 269
257 if (!render_frame_) 270 if (!render_frame_)
258 return; 271 return;
259 const blink::WebRange& range = 272 const blink::WebRange& range =
(...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after
382 break; 395 break;
383 } 396 }
384 } 397 }
385 398
386 FrameInputHandlerImpl::HandlingState::~HandlingState() { 399 FrameInputHandlerImpl::HandlingState::~HandlingState() {
387 render_frame_->set_handling_select_range(original_select_range_value_); 400 render_frame_->set_handling_select_range(original_select_range_value_);
388 render_frame_->set_is_pasting(original_pasting_value_); 401 render_frame_->set_is_pasting(original_pasting_value_);
389 } 402 }
390 403
391 } // namespace content 404 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698