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

Side by Side Diff: content/browser/renderer_host/render_widget_host_view_mac.h

Issue 2166573003: Track TextInputState from multiple RenderWidgets in TextInputManager (Mac) (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Addressing creis@'s comments Created 4 years, 4 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 #ifndef CONTENT_BROWSER_RENDERER_HOST_RENDER_WIDGET_HOST_VIEW_MAC_H_ 5 #ifndef CONTENT_BROWSER_RENDERER_HOST_RENDER_WIDGET_HOST_VIEW_MAC_H_
6 #define CONTENT_BROWSER_RENDERER_HOST_RENDER_WIDGET_HOST_VIEW_MAC_H_ 6 #define CONTENT_BROWSER_RENDERER_HOST_RENDER_WIDGET_HOST_VIEW_MAC_H_
7 7
8 #import <Cocoa/Cocoa.h> 8 #import <Cocoa/Cocoa.h>
9 #include <IOSurface/IOSurface.h> 9 #include <IOSurface/IOSurface.h>
10 #include <stddef.h> 10 #include <stddef.h>
11 #include <stdint.h> 11 #include <stdint.h>
12 12
13 #include <list> 13 #include <list>
14 #include <map> 14 #include <map>
15 #include <memory> 15 #include <memory>
16 #include <set> 16 #include <set>
17 #include <string> 17 #include <string>
18 #include <utility> 18 #include <utility>
19 #include <vector> 19 #include <vector>
20 20
21 #include "base/mac/scoped_nsobject.h" 21 #include "base/mac/scoped_nsobject.h"
22 #include "base/macros.h" 22 #include "base/macros.h"
23 #include "base/memory/weak_ptr.h" 23 #include "base/memory/weak_ptr.h"
24 #include "base/time/time.h" 24 #include "base/time/time.h"
25 #include "cc/surfaces/surface_id.h" 25 #include "cc/surfaces/surface_id.h"
26 #include "content/browser/renderer_host/browser_compositor_view_mac.h" 26 #include "content/browser/renderer_host/browser_compositor_view_mac.h"
27 #include "content/browser/renderer_host/input/mouse_wheel_rails_filter_mac.h" 27 #include "content/browser/renderer_host/input/mouse_wheel_rails_filter_mac.h"
28 #include "content/browser/renderer_host/render_widget_host_view_base.h" 28 #include "content/browser/renderer_host/render_widget_host_view_base.h"
29 #include "content/browser/renderer_host/text_input_manager.h"
29 #include "content/common/content_export.h" 30 #include "content/common/content_export.h"
30 #include "content/common/cursors/webcursor.h" 31 #include "content/common/cursors/webcursor.h"
31 #include "content/common/edit_command.h" 32 #include "content/common/edit_command.h"
32 #include "ipc/ipc_sender.h" 33 #include "ipc/ipc_sender.h"
33 #include "third_party/WebKit/public/web/WebCompositionUnderline.h" 34 #include "third_party/WebKit/public/web/WebCompositionUnderline.h"
34 #include "ui/accelerated_widget_mac/accelerated_widget_mac.h" 35 #include "ui/accelerated_widget_mac/accelerated_widget_mac.h"
35 #include "ui/accelerated_widget_mac/display_link_mac.h" 36 #include "ui/accelerated_widget_mac/display_link_mac.h"
36 #import "ui/base/cocoa/command_dispatcher.h" 37 #import "ui/base/cocoa/command_dispatcher.h"
37 #include "ui/base/cocoa/remote_layer_api.h" 38 #include "ui/base/cocoa/remote_layer_api.h"
38 #import "ui/base/cocoa/tool_tip_base_view.h" 39 #import "ui/base/cocoa/tool_tip_base_view.h"
(...skipping 179 matching lines...) Expand 10 before | Expand all | Expand 10 after
218 // Comment excerpted from render_widget_host.h: 219 // Comment excerpted from render_widget_host.h:
219 // 220 //
220 // "The lifetime of the RenderWidgetHost* is tied to the render process. 221 // "The lifetime of the RenderWidgetHost* is tied to the render process.
221 // If the render process dies, the RenderWidgetHost* goes away and all 222 // If the render process dies, the RenderWidgetHost* goes away and all
222 // references to it must become NULL." 223 // references to it must become NULL."
223 // 224 //
224 // RenderWidgetHostView class hierarchy described in render_widget_host_view.h. 225 // RenderWidgetHostView class hierarchy described in render_widget_host_view.h.
225 class CONTENT_EXPORT RenderWidgetHostViewMac 226 class CONTENT_EXPORT RenderWidgetHostViewMac
226 : public RenderWidgetHostViewBase, 227 : public RenderWidgetHostViewBase,
227 public BrowserCompositorMacClient, 228 public BrowserCompositorMacClient,
229 public TextInputManager::Observer,
228 public ui::AcceleratedWidgetMacNSView, 230 public ui::AcceleratedWidgetMacNSView,
229 public IPC::Sender, 231 public IPC::Sender,
230 public display::DisplayObserver { 232 public display::DisplayObserver {
231 public: 233 public:
232 // The view will associate itself with the given widget. The native view must 234 // The view will associate itself with the given widget. The native view must
233 // be hooked up immediately to the view hierarchy, or else when it is 235 // be hooked up immediately to the view hierarchy, or else when it is
234 // deleted it will delete this out from under the caller. 236 // deleted it will delete this out from under the caller.
235 // 237 //
236 // When |is_guest_view_hack| is true, this view isn't really the view for 238 // When |is_guest_view_hack| is true, this view isn't really the view for
237 // the |widget|, a RenderWidgetHostViewGuest is. 239 // the |widget|, a RenderWidgetHostViewGuest is.
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
275 void StopSpeaking() override; 277 void StopSpeaking() override;
276 void SetBackgroundColor(SkColor color) override; 278 void SetBackgroundColor(SkColor color) override;
277 279
278 // Implementation of RenderWidgetHostViewBase. 280 // Implementation of RenderWidgetHostViewBase.
279 void InitAsPopup(RenderWidgetHostView* parent_host_view, 281 void InitAsPopup(RenderWidgetHostView* parent_host_view,
280 const gfx::Rect& pos) override; 282 const gfx::Rect& pos) override;
281 void InitAsFullscreen(RenderWidgetHostView* reference_host_view) override; 283 void InitAsFullscreen(RenderWidgetHostView* reference_host_view) override;
282 void Focus() override; 284 void Focus() override;
283 void UpdateCursor(const WebCursor& cursor) override; 285 void UpdateCursor(const WebCursor& cursor) override;
284 void SetIsLoading(bool is_loading) override; 286 void SetIsLoading(bool is_loading) override;
285 void TextInputStateChanged(const TextInputState& params) override;
286 void ImeCancelComposition() override; 287 void ImeCancelComposition() override;
287 void ImeCompositionRangeChanged( 288 void ImeCompositionRangeChanged(
288 const gfx::Range& range, 289 const gfx::Range& range,
289 const std::vector<gfx::Rect>& character_bounds) override; 290 const std::vector<gfx::Rect>& character_bounds) override;
290 void RenderProcessGone(base::TerminationStatus status, 291 void RenderProcessGone(base::TerminationStatus status,
291 int error_code) override; 292 int error_code) override;
292 void Destroy() override; 293 void Destroy() override;
293 void SetTooltipText(const base::string16& tooltip_text) override; 294 void SetTooltipText(const base::string16& tooltip_text) override;
294 void SelectionChanged(const base::string16& text, 295 void SelectionChanged(const base::string16& text,
295 size_t offset, 296 size_t offset,
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
341 void ProcessMouseWheelEvent(const blink::WebMouseWheelEvent& event, 342 void ProcessMouseWheelEvent(const blink::WebMouseWheelEvent& event,
342 const ui::LatencyInfo& latency) override; 343 const ui::LatencyInfo& latency) override;
343 void ProcessTouchEvent(const blink::WebTouchEvent& event, 344 void ProcessTouchEvent(const blink::WebTouchEvent& event,
344 const ui::LatencyInfo& latency) override; 345 const ui::LatencyInfo& latency) override;
345 void ProcessGestureEvent(const blink::WebGestureEvent& event, 346 void ProcessGestureEvent(const blink::WebGestureEvent& event,
346 const ui::LatencyInfo& latency) override; 347 const ui::LatencyInfo& latency) override;
347 void TransformPointToLocalCoordSpace(const gfx::Point& point, 348 void TransformPointToLocalCoordSpace(const gfx::Point& point,
348 const cc::SurfaceId& original_surface, 349 const cc::SurfaceId& original_surface,
349 gfx::Point* transformed_point) override; 350 gfx::Point* transformed_point) override;
350 351
352 // TextInputManager::Observer implementation.
353 void OnUpdateTextInputStateCalled(TextInputManager* text_input_manager,
354 RenderWidgetHostViewBase* updated_view,
355 bool did_update_state) override;
351 // IPC::Sender implementation. 356 // IPC::Sender implementation.
352 bool Send(IPC::Message* message) override; 357 bool Send(IPC::Message* message) override;
353 358
354 // display::DisplayObserver implementation. 359 // display::DisplayObserver implementation.
355 void OnDisplayAdded(const display::Display& new_display) override; 360 void OnDisplayAdded(const display::Display& new_display) override;
356 void OnDisplayRemoved(const display::Display& old_display) override; 361 void OnDisplayRemoved(const display::Display& old_display) override;
357 void OnDisplayMetricsChanged(const display::Display& display, 362 void OnDisplayMetricsChanged(const display::Display& display,
358 uint32_t metrics) override; 363 uint32_t metrics) override;
359 364
360 // Forwards the mouse event to the renderer. 365 // Forwards the mouse event to the renderer.
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
398 403
399 WebContents* GetWebContents(); 404 WebContents* GetWebContents();
400 405
401 // These member variables should be private, but the associated ObjC class 406 // These member variables should be private, but the associated ObjC class
402 // needs access to them and can't be made a friend. 407 // needs access to them and can't be made a friend.
403 408
404 // The associated Model. Can be NULL if Destroy() is called when 409 // The associated Model. Can be NULL if Destroy() is called when
405 // someone (other than superview) has retained |cocoa_view_|. 410 // someone (other than superview) has retained |cocoa_view_|.
406 RenderWidgetHostImpl* render_widget_host_; 411 RenderWidgetHostImpl* render_widget_host_;
407 412
408 // Current text input type.
409 ui::TextInputType text_input_type_;
410 bool can_compose_inline_;
411
412 // The background CoreAnimation layer which is hosted by |cocoa_view_|. 413 // The background CoreAnimation layer which is hosted by |cocoa_view_|.
413 base::scoped_nsobject<CALayer> background_layer_; 414 base::scoped_nsobject<CALayer> background_layer_;
414 415
415 // Delegated frame management and compositor interface. 416 // Delegated frame management and compositor interface.
416 std::unique_ptr<BrowserCompositorMac> browser_compositor_; 417 std::unique_ptr<BrowserCompositorMac> browser_compositor_;
417 418
418 // Set when the currently-displayed frame is the minimum scale. Used to 419 // Set when the currently-displayed frame is the minimum scale. Used to
419 // determine if pinch gestures need to be thresholded. 420 // determine if pinch gestures need to be thresholded.
420 bool page_at_minimum_scale_; 421 bool page_at_minimum_scale_;
421 422
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
459 460
460 // AcceleratedWidgetMacNSView implementation. 461 // AcceleratedWidgetMacNSView implementation.
461 NSView* AcceleratedWidgetGetNSView() const override; 462 NSView* AcceleratedWidgetGetNSView() const override;
462 void AcceleratedWidgetGetVSyncParameters( 463 void AcceleratedWidgetGetVSyncParameters(
463 base::TimeTicks* timebase, base::TimeDelta* interval) const override; 464 base::TimeTicks* timebase, base::TimeDelta* interval) const override;
464 void AcceleratedWidgetSwapCompleted() override; 465 void AcceleratedWidgetSwapCompleted() override;
465 466
466 // Exposed for testing. 467 // Exposed for testing.
467 cc::SurfaceId SurfaceIdForTesting() const override; 468 cc::SurfaceId SurfaceIdForTesting() const override;
468 469
470 // Helper method to obtain ui::TextInputType for the active widget from the
471 // TextInputManager.
472 ui::TextInputType GetTextInputType();
473
469 private: 474 private:
470 friend class RenderWidgetHostViewMacTest; 475 friend class RenderWidgetHostViewMacTest;
471 476
472 // Returns whether this render view is a popup (autocomplete window). 477 // Returns whether this render view is a popup (autocomplete window).
473 bool IsPopup() const; 478 bool IsPopup() const;
474 479
475 // Shuts down the render_widget_host_. This is a separate function so we can 480 // Shuts down the render_widget_host_. This is a separate function so we can
476 // invoke it from the message loop. 481 // invoke it from the message loop.
477 void ShutdownHost(); 482 void ShutdownHost();
478 483
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
538 543
539 // Factory used to safely scope delayed calls to ShutdownHost(). 544 // Factory used to safely scope delayed calls to ShutdownHost().
540 base::WeakPtrFactory<RenderWidgetHostViewMac> weak_factory_; 545 base::WeakPtrFactory<RenderWidgetHostViewMac> weak_factory_;
541 546
542 DISALLOW_COPY_AND_ASSIGN(RenderWidgetHostViewMac); 547 DISALLOW_COPY_AND_ASSIGN(RenderWidgetHostViewMac);
543 }; 548 };
544 549
545 } // namespace content 550 } // namespace content
546 551
547 #endif // CONTENT_BROWSER_RENDERER_HOST_RENDER_WIDGET_HOST_VIEW_MAC_H_ 552 #endif // CONTENT_BROWSER_RENDERER_HOST_RENDER_WIDGET_HOST_VIEW_MAC_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698