Home | History | Annotate | Download | only in cocoa
      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_
     48