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

Unified Diff: apps/shell_window.h

Issue 16702003: Move ShellWindow into apps component. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: yar Created 7 years, 6 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 | « apps/apps.gypi ('k') | apps/shell_window.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: apps/shell_window.h
diff --git a/chrome/browser/ui/extensions/shell_window.h b/apps/shell_window.h
similarity index 83%
rename from chrome/browser/ui/extensions/shell_window.h
rename to apps/shell_window.h
index 60a82d2f5009d9938058c32e7f166746172f3b43..9c0f44a0d9a3a42be3b224e6c2ae6b5cd7b889fb 100644
--- a/chrome/browser/ui/extensions/shell_window.h
+++ b/apps/shell_window.h
@@ -9,7 +9,7 @@
#include "base/memory/weak_ptr.h"
#include "chrome/browser/extensions/extension_keybinding_registry.h"
#include "chrome/browser/sessions/session_id.h"
-#include "chrome/browser/ui/chrome_web_modal_dialog_manager_delegate.h"
+#include "components/web_modal/web_contents_modal_dialog_manager_delegate.h"
#include "content/public/browser/notification_observer.h"
#include "content/public/browser/notification_registrar.h"
#include "content/public/browser/web_contents_delegate.h"
@@ -39,6 +39,8 @@ namespace ui {
class BaseWindow;
}
+namespace apps {
+
// Manages the web contents for Shell Windows. The implementation for this
// class should create and maintain the WebContents for the window, and handle
// any message passing between the web contents and the extension system or
@@ -70,8 +72,8 @@ class ShellWindowContents {
// have a WebContents but none of the chrome of normal browser windows.
class ShellWindow : public content::NotificationObserver,
public content::WebContentsDelegate,
- public extensions::ExtensionKeybindingRegistry::Delegate,
- public ChromeWebModalDialogManagerDelegate {
+ public web_modal::WebContentsModalDialogManagerDelegate,
+ public extensions::ExtensionKeybindingRegistry::Delegate {
public:
enum WindowType {
WINDOW_TYPE_DEFAULT = 1 << 0, // Default shell window.
@@ -120,8 +122,48 @@ class ShellWindow : public content::NotificationObserver,
bool focused;
};
+ class Delegate {
+ public:
+ virtual ~Delegate();
+
+ // General initialization.
+ virtual void InitWebContents(content::WebContents* web_contents) = 0;
+
+ // Link handling.
+ virtual content::WebContents* OpenURLFromTab(
+ Profile* profile,
+ content::WebContents* source,
+ const content::OpenURLParams& params) = 0;
+ virtual void AddNewContents(Profile* profile,
+ content::WebContents* new_contents,
+ WindowOpenDisposition disposition,
+ const gfx::Rect& initial_pos,
+ bool user_gesture,
+ bool* was_blocked) = 0;
+
+ // Feature support.
+ virtual content::ColorChooser* ShowColorChooser(
+ content::WebContents* web_contents,
+ SkColor initial_color) = 0;
+ virtual void RunFileChooser(content::WebContents* tab,
+ const content::FileChooserParams& params) = 0;
+ virtual void RequestMediaAccessPermission(
+ content::WebContents* web_contents,
+ const content::MediaStreamRequest& request,
+ const content::MediaResponseCallback& callback,
+ const extensions::Extension* extension) = 0;
+ virtual int PreferredIconSize() = 0;
+
+ // Web contents modal dialog support.
+ virtual void SetWebContentsBlocked(content::WebContents* web_contents,
+ bool blocked) = 0;
+ virtual bool IsWebContentsVisible(content::WebContents* web_contents) = 0;
+ };
+
// Helper function for creating and intiailizing a v2 app window.
+ // The created shell window will take ownership of |delegate|.
static ShellWindow* Create(Profile* profile,
+ Delegate* delegate,
const extensions::Extension* extension,
const GURL& url,
const CreateParams& params);
@@ -134,7 +176,10 @@ class ShellWindow : public content::NotificationObserver,
// The constructor and Init methods are public for constructing a ShellWindow
// with a non-standard render interface (e.g. v1 apps using Ash Panels).
// Normally ShellWindow::Create should be used.
- ShellWindow(Profile* profile, const extensions::Extension* extension);
+ // The constructed shell window takes ownership of |delegate|.
+ ShellWindow(Profile* profile,
+ Delegate* delegate,
+ const extensions::Extension* extension);
// Initializes the render interface, web contents, and native window.
// |shell_window_contents| will become owned by ShellWindow.
@@ -204,8 +249,6 @@ class ShellWindow : public content::NotificationObserver,
return shell_window_contents_.get();
}
- static void DisableExternalOpenForTesting();
-
protected:
virtual ~ShellWindow();
@@ -256,6 +299,12 @@ class ShellWindow : public content::NotificationObserver,
const content::NotificationSource& source,
const content::NotificationDetails& details) OVERRIDE;
+ // web_modal::WebContentsModalDialogManagerDelegate implementation.
+ virtual void SetWebContentsBlocked(content::WebContents* web_contents,
+ bool blocked) OVERRIDE;
+ virtual bool IsWebContentsVisible(
+ content::WebContents* web_contents) OVERRIDE;
+
// Helper method to add a message to the renderer's DevTools console.
void AddMessageToDevToolsConsole(content::ConsoleMessageLevel level,
const std::string& message);
@@ -314,6 +363,7 @@ class ShellWindow : public content::NotificationObserver,
scoped_ptr<NativeAppWindow> native_app_window_;
scoped_ptr<ShellWindowContents> shell_window_contents_;
+ scoped_ptr<Delegate> delegate_;
base::WeakPtrFactory<ShellWindow> image_loader_ptr_factory_;
@@ -325,4 +375,6 @@ class ShellWindow : public content::NotificationObserver,
DISALLOW_COPY_AND_ASSIGN(ShellWindow);
};
+} // namespace apps
+
#endif // CHROME_BROWSER_UI_EXTENSIONS_SHELL_WINDOW_H_
« no previous file with comments | « apps/apps.gypi ('k') | apps/shell_window.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698