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
12namespace ui {
13class TextInputClient;
14}
15
16namespace views {
17class 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_
48