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

Unified Diff: ui/views/cocoa/bridged_native_widget.h

Issue 283053002: Add compositing, layers to app_list_demo Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase onto master -- probably slightly broken Created 6 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « ui/views/cocoa/bridged_content_view.mm ('k') | ui/views/cocoa/bridged_native_widget.mm » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ui/views/cocoa/bridged_native_widget.h
diff --git a/ui/views/cocoa/bridged_native_widget.h b/ui/views/cocoa/bridged_native_widget.h
index 64cf81d71129b0974eccf1e128be71d3f9d4fcd9..a047e83e86a807a04151c821959563b8e495486b 100644
--- a/ui/views/cocoa/bridged_native_widget.h
+++ b/ui/views/cocoa/bridged_native_widget.h
@@ -9,11 +9,14 @@
#import "base/mac/scoped_nsobject.h"
#include "base/memory/scoped_ptr.h"
+#include "ui/compositor/layer_owner.h"
#import "ui/views/focus/focus_manager.h"
#include "ui/views/ime/input_method_delegate.h"
#include "ui/views/views_export.h"
#include "ui/views/widget/widget.h"
+#import "content/browser/compositor/browser_compositor_view_mac.h"
+
@class BridgedContentView;
@class ViewsNSWindowDelegate;
@@ -30,8 +33,12 @@ class View;
// A bridge to an NSWindow managed by an instance of NativeWidgetMac or
// DesktopNativeWidgetMac. Serves as a helper class to bridge requests from the
// NativeWidgetMac to the Cocoa window. Behaves a bit like an aura::Window.
-class VIEWS_EXPORT BridgedNativeWidget : public internal::InputMethodDelegate,
- public FocusChangeListener {
+class VIEWS_EXPORT BridgedNativeWidget
+ : public ui::LayerDelegate,
+ public ui::LayerOwner,
+ public internal::InputMethodDelegate,
+ public FocusChangeListener,
+ public content::BrowserCompositorViewMacClient {
public:
// Creates one side of the bridge. |parent| must not be NULL.
explicit BridgedNativeWidget(NativeWidgetMac* parent);
@@ -45,6 +52,9 @@ class VIEWS_EXPORT BridgedNativeWidget : public internal::InputMethodDelegate,
// This does NOT take ownership of |focus_manager|.
void SetFocusManager(FocusManager* focus_manager);
+ // Changes the bounds of the window and the hosted layer if present.
+ void SetBounds(const gfx::Rect& new_bounds);
+
// Set or clears the views::View bridged by the content view. This does NOT
// take ownership of |view|.
void SetRootView(views::View* view);
@@ -56,6 +66,8 @@ class VIEWS_EXPORT BridgedNativeWidget : public internal::InputMethodDelegate,
InputMethod* CreateInputMethod();
ui::InputMethod* GetHostInputMethod();
+ ui::Layer* GetOrCreateLayer();
+
NativeWidgetMac* native_widget_mac() { return native_widget_mac_; }
BridgedContentView* ns_view() { return bridged_view_; }
NSWindow* ns_window() { return window_; }
@@ -63,10 +75,32 @@ class VIEWS_EXPORT BridgedNativeWidget : public internal::InputMethodDelegate,
// Overridden from internal::InputMethodDelegate:
virtual void DispatchKeyEventPostIME(const ui::KeyEvent& key) OVERRIDE;
+ // Overridden from content::BrowserCompositorViewMacClient:
+ virtual void BrowserCompositorViewFrameSwapped(
+ const std::vector<ui::LatencyInfo>& latency_info) OVERRIDE;
+ virtual NSView* BrowserCompositorSuperview() OVERRIDE;
+ virtual ui::Layer* BrowserCompositorRootLayer() OVERRIDE;
+
private:
// Closes all child windows. BridgedNativeWidget children will be destroyed.
void RemoveOrDestroyChildren();
+ // Size the layer, taking into account display scale factor.
+ void SetLayerSize(const gfx::Size& size_in_dip);
+
+ void OnWindowBoundsChanged();
+
+ // Overridden from ui::LayerDelegate:
+ virtual void OnPaintLayer(gfx::Canvas* canvas) OVERRIDE;
+ virtual void OnDeviceScaleFactorChanged(float device_scale_factor) OVERRIDE;
+ virtual base::Closure PrepareForLayerBoundsChange() OVERRIDE;
+
+ // Overridden from FocusChangeListener:
+ virtual void OnWillChangeFocus(View* focused_before,
+ View* focused_now) OVERRIDE;
+ virtual void OnDidChangeFocus(View* focused_before,
+ View* focused_now) OVERRIDE;
+
views::NativeWidgetMac* native_widget_mac_; // Weak. Owns this.
base::scoped_nsobject<NSWindow> window_;
base::scoped_nsobject<ViewsNSWindowDelegate> window_delegate_;
@@ -74,11 +108,8 @@ class VIEWS_EXPORT BridgedNativeWidget : public internal::InputMethodDelegate,
scoped_ptr<ui::InputMethod> input_method_;
FocusManager* focus_manager_; // Weak. Owned by our Widget.
- // Overridden from FocusChangeListener:
- virtual void OnWillChangeFocus(View* focused_before,
- View* focused_now) OVERRIDE;
- virtual void OnDidChangeFocus(View* focused_before,
- View* focused_now) OVERRIDE;
+ scoped_ptr<content::BrowserCompositorViewMac> compositor_view_;
+ content::BrowserCompositorViewPlaceholderMac recycling_keepalive_;
DISALLOW_COPY_AND_ASSIGN(BridgedNativeWidget);
};
« no previous file with comments | « ui/views/cocoa/bridged_content_view.mm ('k') | ui/views/cocoa/bridged_native_widget.mm » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698