2bc93ab77a1f8abd75a2b10695216630d2cc6d7a
[platform/framework/web/crosswalk.git] / src / ui / views / cocoa / bridged_content_view.h
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.
4
5 #ifndef UI_VIEWS_COCOA_BRIDGED_CONTENT_VIEW_H_
6 #define UI_VIEWS_COCOA_BRIDGED_CONTENT_VIEW_H_
7
8 #import <Cocoa/Cocoa.h>
9
10 #import "ui/base/cocoa/tracking_area.h"
11
12 namespace ui {
13 class TextInputClient;
14 }
15
16 namespace views {
17 class View;
18 }
19
20 // The NSView that sits as the root contentView of the NSWindow, whilst it has
21 // a views::RootView present. Bridges requests from Cocoa to the hosted
22 // views::View.
23 @interface BridgedContentView : NSView<NSTextInputClient> {
24  @private
25   // Weak. The hosted RootView, owned by hostedView_->GetWidget().
26   views::View* hostedView_;
27
28   // Weak. If non-null the TextInputClient of the currently focused View in the
29   // hierarchy rooted at |hostedView_|. Owned by the focused View.
30   ui::TextInputClient* textInputClient_;
31
32   // A tracking area installed to enable mouseMoved events.
33   ui::ScopedCrTrackingArea trackingArea_;
34 }
35
36 @property(readonly, nonatomic) views::View* hostedView;
37 @property(assign, nonatomic) ui::TextInputClient* textInputClient;
38
39 // Initialize the NSView -> views::View bridge. |viewToHost| must be non-NULL.
40 - (id)initWithView:(views::View*)viewToHost;
41
42 // Clear the hosted view. For example, if it is about to be destroyed.
43 - (void)clearView;
44
45 @end
46
47 #endif  // UI_VIEWS_COCOA_BRIDGED_CONTENT_VIEW_H_