Automated Commit: Committing new LKGM version 7479.0.0 for chromeos.
[chromium-blink-merge.git] / ui / views / cocoa / bridged_content_view.h
blob9f6fbb505661a5a84985412dbe16f3958c7957e7
1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #ifndef UI_VIEWS_COCOA_BRIDGED_CONTENT_VIEW_H_
6 #define UI_VIEWS_COCOA_BRIDGED_CONTENT_VIEW_H_
8 #import <Cocoa/Cocoa.h>
10 #include "base/strings/string16.h"
11 #import "ui/base/cocoa/tool_tip_base_view.h"
12 #import "ui/base/cocoa/tracking_area.h"
14 namespace ui {
15 class TextInputClient;
18 namespace views {
19 class View;
22 // The NSView that sits as the root contentView of the NSWindow, whilst it has
23 // a views::RootView present. Bridges requests from Cocoa to the hosted
24 // views::View.
25 @interface BridgedContentView
26 : ToolTipBaseView<NSTextInputClient, NSUserInterfaceValidations> {
27 @private
28 // Weak. The hosted RootView, owned by hostedView_->GetWidget().
29 views::View* hostedView_;
31 // Weak. If non-null the TextInputClient of the currently focused View in the
32 // hierarchy rooted at |hostedView_|. Owned by the focused View.
33 ui::TextInputClient* textInputClient_;
35 // A tracking area installed to enable mouseMoved events.
36 ui::ScopedCrTrackingArea cursorTrackingArea_;
38 // Whether the view is reacting to a keyDown event on the view.
39 BOOL inKeyDown_;
41 // The last tooltip text, used to limit updates.
42 base::string16 lastTooltipText_;
44 // Whether to draw an almost-transparent background with rounded corners so
45 // that OSX correctly blurs the background showing through.
46 BOOL drawMenuBackgroundForBlur_;
48 // Whether dragging on the view moves the window.
49 BOOL mouseDownCanMoveWindow_;
52 @property(readonly, nonatomic) views::View* hostedView;
53 @property(assign, nonatomic) ui::TextInputClient* textInputClient;
54 @property(assign, nonatomic) BOOL drawMenuBackgroundForBlur;
56 // Extends an atomic, readonly property on NSView to make it assignable.
57 // This usually returns YES if the view is transparent. We want to control it
58 // so that BridgedNativeWidget can dynamically enable dragging of the window.
59 @property(assign) BOOL mouseDownCanMoveWindow;
61 // Initialize the NSView -> views::View bridge. |viewToHost| must be non-NULL.
62 - (id)initWithView:(views::View*)viewToHost;
64 // Clear the hosted view. For example, if it is about to be destroyed.
65 - (void)clearView;
67 // Process a mouse event captured while the widget had global mouse capture.
68 - (void)processCapturedMouseEvent:(NSEvent*)theEvent;
70 // Mac's version of views::corewm::TooltipController::UpdateIfRequired().
71 // Updates the tooltip on the ToolTipBaseView if the text needs to change.
72 // |locationInContent| is the position from the top left of the window's
73 // contentRect (also this NSView's frame), as given by a ui::LocatedEvent.
74 - (void)updateTooltipIfRequiredAt:(const gfx::Point&)locationInContent;
76 @end
78 #endif // UI_VIEWS_COCOA_BRIDGED_CONTENT_VIEW_H_