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

Side by Side Diff: content/browser/renderer_host/render_widget_host_view_android.cc

Issue 18750003: Require ACK for editor-related changes not originating from browser. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fixed compile warning on windows Created 7 years, 5 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 (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 "content/browser/renderer_host/render_widget_host_view_android.h" 5 #include "content/browser/renderer_host/render_widget_host_view_android.h"
6 6
7 #include <android/bitmap.h> 7 #include <android/bitmap.h>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/bind_helpers.h" 10 #include "base/bind_helpers.h"
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
66 if (!return_mailbox.IsZero()) { 66 if (!return_mailbox.IsZero()) {
67 ack.gl_frame_data->mailbox = return_mailbox; 67 ack.gl_frame_data->mailbox = return_mailbox;
68 ack.gl_frame_data->size = return_size; 68 ack.gl_frame_data->size = return_size;
69 ack.gl_frame_data->sync_point = 69 ack.gl_frame_data->sync_point =
70 ImageTransportFactoryAndroid::GetInstance()->InsertSyncPoint(); 70 ImageTransportFactoryAndroid::GetInstance()->InsertSyncPoint();
71 } 71 }
72 RenderWidgetHostImpl::SendSwapCompositorFrameAck( 72 RenderWidgetHostImpl::SendSwapCompositorFrameAck(
73 route_id, renderer_host_id, ack); 73 route_id, renderer_host_id, ack);
74 } 74 }
75 75
76 // Sends an acknowledgement to the renderer of a processed IME event.
77 void SendImeEventAck(RenderWidgetHostImpl* host) {
78 host->Send(new ViewMsg_ImeEventAck(host->GetRoutingID()));
79 }
80
76 } // anonymous namespace 81 } // anonymous namespace
77 82
78 RenderWidgetHostViewAndroid::RenderWidgetHostViewAndroid( 83 RenderWidgetHostViewAndroid::RenderWidgetHostViewAndroid(
79 RenderWidgetHostImpl* widget_host, 84 RenderWidgetHostImpl* widget_host,
80 ContentViewCoreImpl* content_view_core) 85 ContentViewCoreImpl* content_view_core)
81 : host_(widget_host), 86 : host_(widget_host),
82 needs_begin_frame_(false), 87 needs_begin_frame_(false),
83 are_layers_attached_(true), 88 are_layers_attached_(true),
84 content_view_core_(NULL), 89 content_view_core_(NULL),
85 ime_adapter_android_(this), 90 ime_adapter_android_(this),
91 has_ordered_ime_processing_(false),
86 cached_background_color_(SK_ColorWHITE), 92 cached_background_color_(SK_ColorWHITE),
87 texture_id_in_layer_(0), 93 texture_id_in_layer_(0),
88 weak_ptr_factory_(this), 94 weak_ptr_factory_(this),
89 overscroll_effect_enabled_(true) { 95 overscroll_effect_enabled_(true) {
90 if (CompositorImpl::UsesDirectGL()) { 96 if (CompositorImpl::UsesDirectGL()) {
91 surface_texture_transport_.reset(new SurfaceTextureTransportClient()); 97 surface_texture_transport_.reset(new SurfaceTextureTransportClient());
92 layer_ = surface_texture_transport_->Initialize(); 98 layer_ = surface_texture_transport_->Initialize();
93 layer_->SetIsDrawable(true); 99 layer_->SetIsDrawable(true);
94 } else { 100 } else {
95 if (CommandLine::ForCurrentProcess()->HasSwitch( 101 if (CommandLine::ForCurrentProcess()->HasSwitch(
(...skipping 11 matching lines...) Expand all
107 overscroll_effect_enabled_ = !CommandLine::ForCurrentProcess()-> 113 overscroll_effect_enabled_ = !CommandLine::ForCurrentProcess()->
108 HasSwitch(switches::kDisableOverscrollEdgeEffect); 114 HasSwitch(switches::kDisableOverscrollEdgeEffect);
109 // Don't block the main thread with effect resource loading. 115 // Don't block the main thread with effect resource loading.
110 // Actual effect creation is deferred until an overscroll event is received. 116 // Actual effect creation is deferred until an overscroll event is received.
111 if (overscroll_effect_enabled_) { 117 if (overscroll_effect_enabled_) {
112 base::WorkerPool::PostTask(FROM_HERE, 118 base::WorkerPool::PostTask(FROM_HERE,
113 base::Bind(&OverscrollGlow::EnsureResources), 119 base::Bind(&OverscrollGlow::EnsureResources),
114 true); 120 true);
115 } 121 }
116 122
123 has_ordered_ime_processing_ =
124 CommandLine::ForCurrentProcess()->HasSwitch(
125 switches::kEnableOrderedImeProcessing);
126
117 host_->SetView(this); 127 host_->SetView(this);
118 SetContentViewCore(content_view_core); 128 SetContentViewCore(content_view_core);
119 } 129 }
120 130
121 RenderWidgetHostViewAndroid::~RenderWidgetHostViewAndroid() { 131 RenderWidgetHostViewAndroid::~RenderWidgetHostViewAndroid() {
122 SetContentViewCore(NULL); 132 SetContentViewCore(NULL);
123 DCHECK(ack_callbacks_.empty()); 133 DCHECK(ack_callbacks_.empty());
124 if (texture_id_in_layer_) { 134 if (texture_id_in_layer_) {
125 ImageTransportFactoryAndroid::GetInstance()->DeleteTexture( 135 ImageTransportFactoryAndroid::GetInstance()->DeleteTexture(
126 texture_id_in_layer_); 136 texture_id_in_layer_);
(...skipping 256 matching lines...) Expand 10 before | Expand all | Expand 10 after
383 bool can_compose_inline) { 393 bool can_compose_inline) {
384 // Unused on Android, which uses OnTextInputChanged instead. 394 // Unused on Android, which uses OnTextInputChanged instead.
385 } 395 }
386 396
387 int RenderWidgetHostViewAndroid::GetNativeImeAdapter() { 397 int RenderWidgetHostViewAndroid::GetNativeImeAdapter() {
388 return reinterpret_cast<int>(&ime_adapter_android_); 398 return reinterpret_cast<int>(&ime_adapter_android_);
389 } 399 }
390 400
391 void RenderWidgetHostViewAndroid::OnTextInputStateChanged( 401 void RenderWidgetHostViewAndroid::OnTextInputStateChanged(
392 const ViewHostMsg_TextInputState_Params& params) { 402 const ViewHostMsg_TextInputState_Params& params) {
403 if (has_ordered_ime_processing()) {
404 // Regardless of how we exit from this method, we must acknowledge that we
405 // processed the input state change.
406 base::ScopedClosureRunner ackCaller(base::Bind(&SendImeEventAck, host_));
407 }
393 if (!IsShowing()) 408 if (!IsShowing())
394 return; 409 return;
395 410
396 content_view_core_->UpdateImeAdapter( 411 content_view_core_->UpdateImeAdapter(
397 GetNativeImeAdapter(), 412 GetNativeImeAdapter(),
398 static_cast<int>(params.type), 413 static_cast<int>(params.type),
399 params.value, params.selection_start, params.selection_end, 414 params.value, params.selection_start, params.selection_end,
400 params.composition_start, params.composition_end, 415 params.composition_start, params.composition_end,
401 params.show_ime_if_needed); 416 params.show_ime_if_needed);
402 } 417 }
(...skipping 711 matching lines...) Expand 10 before | Expand all | Expand 10 after
1114 // RenderWidgetHostView, public: 1129 // RenderWidgetHostView, public:
1115 1130
1116 // static 1131 // static
1117 RenderWidgetHostView* 1132 RenderWidgetHostView*
1118 RenderWidgetHostView::CreateViewForWidget(RenderWidgetHost* widget) { 1133 RenderWidgetHostView::CreateViewForWidget(RenderWidgetHost* widget) {
1119 RenderWidgetHostImpl* rwhi = RenderWidgetHostImpl::From(widget); 1134 RenderWidgetHostImpl* rwhi = RenderWidgetHostImpl::From(widget);
1120 return new RenderWidgetHostViewAndroid(rwhi, NULL); 1135 return new RenderWidgetHostViewAndroid(rwhi, NULL);
1121 } 1136 }
1122 1137
1123 } // namespace content 1138 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698