summaryrefslogtreecommitdiffstats
path: root/chrome/browser/cocoa/extension_view_mac.h
diff options
context:
space:
mode:
authorthakis@chromium.org <thakis@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-09-16 00:59:04 +0000
committerthakis@chromium.org <thakis@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-09-16 00:59:04 +0000
commit10eaf87fb4e1f7677001d16c1296b7305143f633 (patch)
treeca3cd34d91a302174a43561a37340ec7227a2ac5 /chrome/browser/cocoa/extension_view_mac.h
parent9b9c9b5cf3693654c4fec4a058dfaa62fee9737b (diff)
downloadchromium_src-10eaf87fb4e1f7677001d16c1296b7305143f633.zip
chromium_src-10eaf87fb4e1f7677001d16c1296b7305143f633.tar.gz
chromium_src-10eaf87fb4e1f7677001d16c1296b7305143f633.tar.bz2
Add a bare-bones extension shelf that displays extension items on OS X.
This brings our extension support to about the level it has on linux. One issue is that the toolstrips are webpages with a background image that just happens to look like the shelf they are on. But the background images are not updated on key->nonkey window changes, so the toolstrip backgrounds look slightly off in one of the two cases. If we decide to keep the shelf, we should fix this, but see the bug for erikkay's stance on this. Also, the NTP is only loaded after all toolstrips have been loaded for some reason. That's what happens on the other platforms too, I believe. The extension shelf uses the DownloadShelfView as background view for now. Screenie: http://imgur.com/wSHgU.png BUG=19073 TEST=Extensions that live in the shelf should show up. They should be clickable, resize correctly (e.g. the build status extension), and the shelf should interact in a sane way with the status bubble. Review URL: http://codereview.chromium.org/175025 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@26311 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/cocoa/extension_view_mac.h')
-rw-r--r--chrome/browser/cocoa/extension_view_mac.h65
1 files changed, 65 insertions, 0 deletions
diff --git a/chrome/browser/cocoa/extension_view_mac.h b/chrome/browser/cocoa/extension_view_mac.h
new file mode 100644
index 0000000..e358d1b
--- /dev/null
+++ b/chrome/browser/cocoa/extension_view_mac.h
@@ -0,0 +1,65 @@
+// Copyright (c) 2009 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CHROME_BROWSER_COCOA_EXTENSION_VIEW_MAC_H_
+#define CHROME_BROWSER_COCOA_EXTENSION_VIEW_MAC_H_
+
+#include "base/basictypes.h"
+#include "base/gfx/native_widget_types.h"
+
+class Browser;
+class ExtensionHost;
+class RenderViewHost;
+class RenderWidgetHostViewMac;
+class SkBitmap;
+
+// This class represents extension views. An extension view internally contains
+// a bridge to an extension process, which draws to the extension view's
+// native view object through IPC.
+class ExtensionViewMac {
+ public:
+ ExtensionViewMac(ExtensionHost* extension_host, Browser* browser);
+ ~ExtensionViewMac();
+
+ // Starts the extension process and creates the native view. You must call
+ // this method before calling any of this class's other methods.
+ void Init();
+
+ // Returns the extension's native view.
+ gfx::NativeView native_view();
+
+ // Returns the browser the extension belongs to.
+ Browser* browser() const { return browser_; }
+
+ // Does this extension live as a toolstrip in an extension shelf?
+ bool is_toolstrip() const { return is_toolstrip_; }
+ void set_is_toolstrip(bool is_toolstrip) { is_toolstrip_ = is_toolstrip; }
+
+ // Sets the extensions's background image.
+ void SetBackground(const SkBitmap& background);
+
+ // Method for the ExtensionHost to notify us about the correct width for
+ // extension contents.
+ void UpdatePreferredWidth(int pref_width);
+
+ private:
+ RenderViewHost* render_view_host() const;
+
+ void CreateWidgetHostView();
+
+ // True if the contents are being displayed inside the extension shelf.
+ bool is_toolstrip_;
+
+ Browser* browser_; // weak
+
+ ExtensionHost* extension_host_; // weak
+
+ // Created by us, but owned by its |native_view()|. We |release| the
+ // rwhv's native view in our destructor, effectively freeing this.
+ RenderWidgetHostViewMac* render_widget_host_view_;
+
+ DISALLOW_COPY_AND_ASSIGN(ExtensionViewMac);
+};
+
+#endif // CHROME_BROWSER_COCOA_EXTENSION_VIEW_MAC_H_