diff options
Diffstat (limited to 'apps')
-rw-r--r-- | apps/app_lifetime_monitor.cc | 8 | ||||
-rw-r--r-- | apps/app_shim/app_shim_handler_mac.h | 2 | ||||
-rw-r--r-- | apps/app_shim/extension_app_shim_handler_mac.cc | 19 | ||||
-rw-r--r-- | apps/app_window_contents.cc | 13 | ||||
-rw-r--r-- | apps/app_window_contents.h | 5 | ||||
-rw-r--r-- | apps/shell/browser/shell_extensions_browser_client.cc | 4 | ||||
-rw-r--r-- | apps/shell/browser/shell_extensions_browser_client.h | 1 | ||||
-rw-r--r-- | apps/shell_window.cc | 81 | ||||
-rw-r--r-- | apps/shell_window.h | 18 |
9 files changed, 93 insertions, 58 deletions
diff --git a/apps/app_lifetime_monitor.cc b/apps/app_lifetime_monitor.cc index 41d7f6b..f2bb345 100644 --- a/apps/app_lifetime_monitor.cc +++ b/apps/app_lifetime_monitor.cc @@ -82,8 +82,8 @@ void AppLifetimeMonitor::OnShellWindowAdded(ShellWindow* shell_window) { return; ShellWindowRegistry::ShellWindowList windows = - ShellWindowRegistry::Get(shell_window->profile())-> - GetShellWindowsForApp(shell_window->extension_id()); + ShellWindowRegistry::Get(shell_window->browser_context()) + ->GetShellWindowsForApp(shell_window->extension_id()); if (windows.size() == 1) NotifyAppActivated(shell_window->extension_id()); } @@ -92,8 +92,8 @@ void AppLifetimeMonitor::OnShellWindowIconChanged(ShellWindow* shell_window) {} void AppLifetimeMonitor::OnShellWindowRemoved(ShellWindow* shell_window) { ShellWindowRegistry::ShellWindowList windows = - ShellWindowRegistry::Get(shell_window->profile())-> - GetShellWindowsForApp(shell_window->extension_id()); + ShellWindowRegistry::Get(shell_window->browser_context()) + ->GetShellWindowsForApp(shell_window->extension_id()); if (windows.empty()) NotifyAppDeactivated(shell_window->extension_id()); } diff --git a/apps/app_shim/app_shim_handler_mac.h b/apps/app_shim/app_shim_handler_mac.h index 2e73181..0ecde07 100644 --- a/apps/app_shim/app_shim_handler_mac.h +++ b/apps/app_shim/app_shim_handler_mac.h @@ -11,8 +11,6 @@ #include "apps/app_shim/app_shim_launch.h" #include "base/files/file_path.h" -class Profile; - namespace apps { // Registrar, and interface for services that can handle interactions with OSX diff --git a/apps/app_shim/extension_app_shim_handler_mac.cc b/apps/app_shim/extension_app_shim_handler_mac.cc index 4a580a5e..d9917bc 100644 --- a/apps/app_shim/extension_app_shim_handler_mac.cc +++ b/apps/app_shim/extension_app_shim_handler_mac.cc @@ -230,14 +230,16 @@ void ExtensionAppShimHandler::QuitAppForWindow(ShellWindow* shell_window) { ExtensionAppShimHandler* handler = g_browser_process->platform_part()->app_shim_host_manager()-> extension_app_shim_handler(); - Host* host = handler->FindHost(shell_window->profile(), - shell_window->extension_id()); + Host* host = handler->FindHost( + Profile::FromBrowserContext(shell_window->browser_context()), + shell_window->extension_id()); if (host) { handler->OnShimQuit(host); } else { // App shims might be disabled or the shim is still starting up. - ShellWindowRegistry::Get(shell_window->profile())-> - CloseAllShellWindowsForApp(shell_window->extension_id()); + ShellWindowRegistry::Get( + Profile::FromBrowserContext(shell_window->browser_context())) + ->CloseAllShellWindowsForApp(shell_window->extension_id()); } } @@ -245,7 +247,8 @@ void ExtensionAppShimHandler::HideAppForWindow(ShellWindow* shell_window) { ExtensionAppShimHandler* handler = g_browser_process->platform_part()->app_shim_host_manager()-> extension_app_shim_handler(); - Profile* profile = shell_window->profile(); + Profile* profile = + Profile::FromBrowserContext(shell_window->browser_context()); Host* host = handler->FindHost(profile, shell_window->extension_id()); if (host) host->OnAppHide(); @@ -258,7 +261,8 @@ void ExtensionAppShimHandler::FocusAppForWindow(ShellWindow* shell_window) { ExtensionAppShimHandler* handler = g_browser_process->platform_part()->app_shim_host_manager()-> extension_app_shim_handler(); - Profile* profile = shell_window->profile(); + Profile* profile = + Profile::FromBrowserContext(shell_window->browser_context()); const std::string& app_id = shell_window->extension_id(); Host* host = handler->FindHost(profile, app_id); if (host) { @@ -277,7 +281,8 @@ bool ExtensionAppShimHandler::RequestUserAttentionForWindow( ExtensionAppShimHandler* handler = g_browser_process->platform_part()->app_shim_host_manager()-> extension_app_shim_handler(); - Profile* profile = shell_window->profile(); + Profile* profile = + Profile::FromBrowserContext(shell_window->browser_context()); Host* host = handler->FindHost(profile, shell_window->extension_id()); if (host) { // Bring the window to the front without showing it. diff --git a/apps/app_window_contents.cc b/apps/app_window_contents.cc index e3ddf7c..fbe70cc 100644 --- a/apps/app_window_contents.cc +++ b/apps/app_window_contents.cc @@ -6,9 +6,9 @@ #include "apps/ui/native_app_window.h" #include "chrome/browser/chrome_notification_types.h" -#include "chrome/browser/profiles/profile.h" #include "chrome/common/extensions/api/app_window.h" #include "chrome/common/extensions/extension_messages.h" +#include "content/public/browser/browser_context.h" #include "content/public/browser/browser_thread.h" #include "content/public/browser/render_process_host.h" #include "content/public/browser/render_view_host.h" @@ -28,15 +28,16 @@ AppWindowContents::AppWindowContents(ShellWindow* host) AppWindowContents::~AppWindowContents() { } -void AppWindowContents::Initialize(Profile* profile, const GURL& url) { +void AppWindowContents::Initialize(content::BrowserContext* context, + const GURL& url) { url_ = url; extension_function_dispatcher_.reset( - new ExtensionFunctionDispatcher(profile, this)); + new ExtensionFunctionDispatcher(context, this)); - web_contents_.reset(content::WebContents::Create( - content::WebContents::CreateParams( - profile, content::SiteInstance::CreateForURL(profile, url_)))); + web_contents_.reset( + content::WebContents::Create(content::WebContents::CreateParams( + context, content::SiteInstance::CreateForURL(context, url_)))); content::WebContentsObserver::Observe(web_contents_.get()); web_contents_->GetMutableRendererPrefs()-> diff --git a/apps/app_window_contents.h b/apps/app_window_contents.h index 80b95de..ea09f83 100644 --- a/apps/app_window_contents.h +++ b/apps/app_window_contents.h @@ -17,7 +17,7 @@ class GURL; namespace content { -class RenderViewHost; +class BrowserContext; } namespace extensions { @@ -38,7 +38,8 @@ class AppWindowContents : public ShellWindowContents, virtual ~AppWindowContents(); // ShellWindowContents - virtual void Initialize(Profile* profile, const GURL& url) OVERRIDE; + virtual void Initialize(content::BrowserContext* context, + const GURL& url) OVERRIDE; virtual void LoadContents(int32 creator_process_id) OVERRIDE; virtual void NativeWindowChanged(NativeAppWindow* native_app_window) OVERRIDE; virtual void NativeWindowClosed() OVERRIDE; diff --git a/apps/shell/browser/shell_extensions_browser_client.cc b/apps/shell/browser/shell_extensions_browser_client.cc index 8a95c32..7be0a24 100644 --- a/apps/shell/browser/shell_extensions_browser_client.cc +++ b/apps/shell/browser/shell_extensions_browser_client.cc @@ -82,6 +82,10 @@ BrowserContext* ShellExtensionsBrowserClient::GetOriginalContext( return context; } +bool ShellExtensionsBrowserClient::IsGuestSession(BrowserContext* context) { + return false; +} + bool ShellExtensionsBrowserClient::IsExtensionIncognitoEnabled( const std::string& extension_id, content::BrowserContext* context) const { diff --git a/apps/shell/browser/shell_extensions_browser_client.h b/apps/shell/browser/shell_extensions_browser_client.h index 7d35899..d600d81 100644 --- a/apps/shell/browser/shell_extensions_browser_client.h +++ b/apps/shell/browser/shell_extensions_browser_client.h @@ -33,6 +33,7 @@ class ShellExtensionsBrowserClient : public ExtensionsBrowserClient { content::BrowserContext* context) OVERRIDE; virtual content::BrowserContext* GetOriginalContext( content::BrowserContext* context) OVERRIDE; + virtual bool IsGuestSession(content::BrowserContext* context) OVERRIDE; virtual bool IsExtensionIncognitoEnabled( const std::string& extension_id, content::BrowserContext* context) const OVERRIDE; diff --git a/apps/shell_window.cc b/apps/shell_window.cc index d1ad0fe..8bb6262 100644 --- a/apps/shell_window.cc +++ b/apps/shell_window.cc @@ -15,11 +15,11 @@ #include "chrome/browser/extensions/extension_web_contents_observer.h" #include "chrome/browser/extensions/suggest_permission_util.h" #include "chrome/browser/lifetime/application_lifetime.h" -#include "chrome/browser/profiles/profile.h" #include "chrome/common/chrome_switches.h" #include "chrome/common/extensions/extension_messages.h" #include "chrome/common/extensions/manifest_handlers/icons_handler.h" #include "components/web_modal/web_contents_modal_dialog_manager.h" +#include "content/public/browser/browser_context.h" #include "content/public/browser/invalidate_type.h" #include "content/public/browser/navigation_entry.h" #include "content/public/browser/notification_details.h" @@ -32,6 +32,7 @@ #include "content/public/browser/web_contents_view.h" #include "content/public/common/media_stream_request.h" #include "extensions/browser/extension_system.h" +#include "extensions/browser/extensions_browser_client.h" #include "extensions/browser/process_manager.h" #include "extensions/browser/view_type_utils.h" #include "extensions/common/extension.h" @@ -43,6 +44,7 @@ #include "base/prefs/pref_service.h" #endif +using content::BrowserContext; using content::ConsoleMessageLevel; using content::WebContents; using extensions::APIPermission; @@ -137,10 +139,10 @@ ShellWindow::CreateParams::~CreateParams() {} ShellWindow::Delegate::~Delegate() {} -ShellWindow::ShellWindow(Profile* profile, +ShellWindow::ShellWindow(BrowserContext* context, Delegate* delegate, const extensions::Extension* extension) - : profile_(profile), + : browser_context_(context), extension_(extension), extension_id_(extension->id()), window_type_(WINDOW_TYPE_DEFAULT), @@ -150,7 +152,9 @@ ShellWindow::ShellWindow(Profile* profile, show_on_first_paint_(false), first_paint_complete_(false), cached_always_on_top_(false) { - CHECK(!profile->IsGuestSession() || profile->IsOffTheRecord()) + extensions::ExtensionsBrowserClient* client = + extensions::ExtensionsBrowserClient::Get(); + CHECK(!client->IsGuestSession(context) || context->IsOffTheRecord()) << "Only off the record window may be opened in the guest mode."; } @@ -159,7 +163,7 @@ void ShellWindow::Init(const GURL& url, const CreateParams& params) { // Initialize the render interface and web contents shell_window_contents_.reset(shell_window_contents); - shell_window_contents_->Initialize(profile(), url); + shell_window_contents_->Initialize(browser_context(), url); WebContents* web_contents = shell_window_contents_->GetWebContents(); if (CommandLine::ForCurrentProcess()->HasSwitch( switches::kEnableAppsShowOnFirstPaint)) { @@ -207,8 +211,12 @@ void ShellWindow::Init(const GURL& url, // about it in case it has any setup to do to make the renderer appear // properly. In particular, on Windows, the view's clickthrough region needs // to be set. - registrar_.Add(this, chrome::NOTIFICATION_EXTENSION_UNLOADED, - content::Source<Profile>(profile_->GetOriginalProfile())); + extensions::ExtensionsBrowserClient* client = + extensions::ExtensionsBrowserClient::Get(); + registrar_.Add(this, + chrome::NOTIFICATION_EXTENSION_UNLOADED, + content::Source<content::BrowserContext>( + client->GetOriginalContext(browser_context_))); // Close when the browser process is exiting. registrar_.Add(this, chrome::NOTIFICATION_APP_TERMINATING, content::NotificationService::AllSources()); @@ -229,7 +237,7 @@ void ShellWindow::Init(const GURL& url, UpdateExtensionAppIcon(); - ShellWindowRegistry::Get(profile_)->AddShellWindow(this); + ShellWindowRegistry::Get(browser_context_)->AddShellWindow(this); } ShellWindow::~ShellWindow() { @@ -272,8 +280,8 @@ WebContents* ShellWindow::OpenURLFromTab(WebContents* source, return NULL; } - WebContents* contents = delegate_->OpenURLFromTab(profile_, source, - params); + WebContents* contents = + delegate_->OpenURLFromTab(browser_context_, source, params); if (!contents) { AddMessageToDevToolsConsole( content::CONSOLE_MESSAGE_LEVEL_ERROR, @@ -291,10 +299,13 @@ void ShellWindow::AddNewContents(WebContents* source, const gfx::Rect& initial_pos, bool user_gesture, bool* was_blocked) { - DCHECK(Profile::FromBrowserContext(new_contents->GetBrowserContext()) == - profile_); - delegate_->AddNewContents(profile_, new_contents, disposition, - initial_pos, user_gesture, was_blocked); + DCHECK(new_contents->GetBrowserContext() == browser_context_); + delegate_->AddNewContents(browser_context_, + new_contents, + disposition, + initial_pos, + user_gesture, + was_blocked); } bool ShellWindow::PreHandleKeyboardEvent( @@ -366,7 +377,7 @@ void ShellWindow::DidFirstVisuallyNonEmptyPaint(int32 page_id) { } void ShellWindow::OnNativeClose() { - ShellWindowRegistry::Get(profile_)->RemoveShellWindow(this); + ShellWindowRegistry::Get(browser_context_)->RemoveShellWindow(this); if (shell_window_contents_) { WebContents* web_contents = shell_window_contents_->GetWebContents(); WebContentsModalDialogManager::FromWebContents(web_contents)-> @@ -394,7 +405,7 @@ void ShellWindow::OnNativeWindowChanged() { } void ShellWindow::OnNativeWindowActivated() { - ShellWindowRegistry::Get(profile_)->ShellWindowActivated(this); + ShellWindowRegistry::Get(browser_context_)->ShellWindowActivated(this); } content::WebContents* ShellWindow::web_contents() const { @@ -488,13 +499,16 @@ void ShellWindow::UpdateAppIcon(const gfx::Image& image) { return; app_icon_ = image; native_app_window_->UpdateWindowIcon(); - ShellWindowRegistry::Get(profile_)->ShellWindowIconChanged(this); + ShellWindowRegistry::Get(browser_context_)->ShellWindowIconChanged(this); } void ShellWindow::Fullscreen() { #if !defined(OS_MACOSX) // Do not enter fullscreen mode if disallowed by pref. - if (!profile()->GetPrefs()->GetBoolean(prefs::kAppFullscreenAllowed)) + PrefService* prefs = + extensions::ExtensionsBrowserClient::Get()->GetPrefServiceForContext( + browser_context()); + if (!prefs->GetBoolean(prefs::kAppFullscreenAllowed)) return; #endif fullscreen_types_ |= FULLSCREEN_TYPE_WINDOW_API; @@ -521,7 +535,10 @@ void ShellWindow::Restore() { void ShellWindow::OSFullscreen() { #if !defined(OS_MACOSX) // Do not enter fullscreen mode if disallowed by pref. - if (!profile()->GetPrefs()->GetBoolean(prefs::kAppFullscreenAllowed)) + PrefService* prefs = + extensions::ExtensionsBrowserClient::Get()->GetPrefServiceForContext( + browser_context()); + if (!prefs->GetBoolean(prefs::kAppFullscreenAllowed)) return; #endif fullscreen_types_ |= FULLSCREEN_TYPE_OS; @@ -667,13 +684,13 @@ void ShellWindow::UpdateExtensionAppIcon() { // Avoid using any previous app icons were being downloaded. image_loader_ptr_factory_.InvalidateWeakPtrs(); - app_icon_image_.reset(new extensions::IconImage( - profile(), - extension(), - extensions::IconsInfo::GetIcons(extension()), - delegate_->PreferredIconSize(), - extensions::IconsInfo::GetDefaultAppIcon(), - this)); + app_icon_image_.reset( + new extensions::IconImage(browser_context(), + extension(), + extensions::IconsInfo::GetIcons(extension()), + delegate_->PreferredIconSize(), + extensions::IconsInfo::GetDefaultAppIcon(), + this)); // Triggers actual image loading with 1x resources. The 2x resource will // be handled by IconImage class when requested. @@ -786,8 +803,10 @@ void ShellWindow::ToggleFullscreenModeForTab(content::WebContents* source, // Do not enter fullscreen mode if disallowed by pref. // TODO(bartfab): Add a test once it becomes possible to simulate a user // gesture. http://crbug.com/174178 - if (enter_fullscreen && - !profile()->GetPrefs()->GetBoolean(prefs::kAppFullscreenAllowed)) { + PrefService* prefs = + extensions::ExtensionsBrowserClient::Get()->GetPrefServiceForContext( + browser_context()); + if (enter_fullscreen && !prefs->GetBoolean(prefs::kAppFullscreenAllowed)) { return; } #endif @@ -863,7 +882,8 @@ void ShellWindow::SaveWindowPosition() { if (!native_app_window_) return; - ShellWindowGeometryCache* cache = ShellWindowGeometryCache::Get(profile()); + ShellWindowGeometryCache* cache = + ShellWindowGeometryCache::Get(browser_context()); gfx::Rect bounds = native_app_window_->GetRestoredBounds(); bounds.Inset(native_app_window_->GetFrameInsets()); @@ -919,7 +939,8 @@ ShellWindow::CreateParams ShellWindow::LoadDefaultsAndConstrain( // Load cached state if it exists. if (!params.window_key.empty()) { - ShellWindowGeometryCache* cache = ShellWindowGeometryCache::Get(profile()); + ShellWindowGeometryCache* cache = + ShellWindowGeometryCache::Get(browser_context()); gfx::Rect cached_bounds; gfx::Rect cached_screen_bounds; diff --git a/apps/shell_window.h b/apps/shell_window.h index 8be7a595..2901376 100644 --- a/apps/shell_window.h +++ b/apps/shell_window.h @@ -21,7 +21,6 @@ #include "ui/gfx/rect.h" class GURL; -class Profile; class SkRegion; namespace base { @@ -29,6 +28,7 @@ class DictionaryValue; } namespace content { +class BrowserContext; class WebContents; } @@ -58,7 +58,8 @@ class ShellWindowContents { virtual ~ShellWindowContents() {} // Called to initialize the WebContents, before the app window is created. - virtual void Initialize(Profile* profile, const GURL& url) = 0; + virtual void Initialize(content::BrowserContext* context, + const GURL& url) = 0; // Called to load the contents, after the app window is created. virtual void LoadContents(int32 creator_process_id) = 0; @@ -201,10 +202,10 @@ class ShellWindow : public content::NotificationObserver, // Link handling. virtual content::WebContents* OpenURLFromTab( - Profile* profile, + content::BrowserContext* context, content::WebContents* source, const content::OpenURLParams& params) = 0; - virtual void AddNewContents(Profile* profile, + virtual void AddNewContents(content::BrowserContext* context, content::WebContents* new_contents, WindowOpenDisposition disposition, const gfx::Rect& initial_pos, @@ -239,7 +240,7 @@ class ShellWindow : public content::NotificationObserver, // with a non-standard render interface (e.g. v1 apps using Ash Panels). // Normally ShellWindow::Create should be used. // The constructed shell window takes ownership of |delegate|. - ShellWindow(Profile* profile, + ShellWindow(content::BrowserContext* context, Delegate* delegate, const extensions::Extension* extension); @@ -260,7 +261,7 @@ class ShellWindow : public content::NotificationObserver, return (window_type_ == WINDOW_TYPE_PANEL || window_type_ == WINDOW_TYPE_V1_PANEL); } - Profile* profile() const { return profile_; } + content::BrowserContext* browser_context() const { return browser_context_; } const gfx::Image& app_icon() const { return app_icon_; } const GURL& app_icon_url() const { return app_icon_url_; } const gfx::Image& badge_icon() const { return badge_icon_; } @@ -488,7 +489,10 @@ class ShellWindow : public content::NotificationObserver, virtual void OnExtensionIconImageChanged( extensions::IconImage* image) OVERRIDE; - Profile* profile_; // weak pointer - owned by ProfileManager. + // The browser context with which this window is associated. ShellWindow does + // not own this object. + content::BrowserContext* browser_context_; + // weak pointer - owned by ExtensionService. const extensions::Extension* extension_; const std::string extension_id_; |