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

Unified Diff: chrome/browser/ui/browser.cc

Issue 10409023: Remove extension application launch code from Browser (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebase Created 8 years, 7 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 | « chrome/browser/ui/browser.h ('k') | chrome/browser/ui/browser_browsertest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/ui/browser.cc
diff --git a/chrome/browser/ui/browser.cc b/chrome/browser/ui/browser.cc
index 9e2ad5502f75c8a67d8e0ca61e32aa443115bf9f..7e540c0a84c1dcb7f13fd20b04929993234d3b7d 100644
--- a/chrome/browser/ui/browser.cc
+++ b/chrome/browser/ui/browser.cc
@@ -211,8 +211,6 @@
#if defined(USE_ASH)
#include "ash/ash_switches.h"
-#include "ash/shell.h"
-#include "chrome/browser/ui/views/ash/panel_view_aura.h"
#endif
using base::TimeDelta;
@@ -263,31 +261,6 @@ bool HasInternalURL(const NavigationEntry* entry) {
return false;
}
-// Get the launch URL for a given extension, with optional override/fallback.
-// |override_url|, if non-empty, will be preferred over the extension's
-// launch url.
-GURL UrlForExtension(const Extension* extension, const GURL& override_url) {
- if (!extension)
- return override_url;
-
- GURL url;
- if (!override_url.is_empty()) {
- DCHECK(extension->web_extent().MatchesURL(override_url));
- url = override_url;
- } else {
- url = extension->GetFullLaunchURL();
- }
-
- // For extensions lacking launch urls, determine a reasonable fallback.
- if (!url.is_valid()) {
- url = extension->options_url();
- if (!url.is_valid())
- url = GURL(chrome::kChromeUIExtensionsURL);
- }
-
- return url;
-}
-
// Parse two comma-separated integers from str. Return true on success.
bool ParseCommaSeparatedIntegers(const std::string& str,
int* ret_num1,
@@ -691,261 +664,6 @@ void Browser::OpenURLOffTheRecord(Profile* profile, const GURL& url) {
}
// static
-WebContents* Browser::OpenApplication(
- Profile* profile,
- const Extension* extension,
- extension_misc::LaunchContainer container,
- const GURL& override_url,
- WindowOpenDisposition disposition) {
- WebContents* tab = NULL;
- ExtensionPrefs* prefs = profile->GetExtensionService()->extension_prefs();
- prefs->SetActiveBit(extension->id(), true);
-
- UMA_HISTOGRAM_ENUMERATION("Extensions.AppLaunchContainer", container, 100);
-
- if (extension->is_platform_app()) {
- extensions::AppEventRouter::DispatchOnLaunchedEvent(profile, extension);
- return NULL;
- }
-
- switch (container) {
- case extension_misc::LAUNCH_NONE: {
- NOTREACHED();
- break;
- }
- case extension_misc::LAUNCH_PANEL:
-#if defined(USE_ASH)
- if (extension &&
- CommandLine::ForCurrentProcess()->HasSwitch(
- ash::switches::kAuraPanelManager)) {
- tab = OpenApplicationPanel(profile, extension, override_url);
- break;
- }
- // else fall through to LAUNCH_WINDOW
-#endif
- case extension_misc::LAUNCH_WINDOW:
- tab = Browser::OpenApplicationWindow(profile, extension, container,
- override_url, NULL);
- break;
- case extension_misc::LAUNCH_TAB: {
- tab = Browser::OpenApplicationTab(profile, extension, override_url,
- disposition);
- break;
- }
- default:
- NOTREACHED();
- break;
- }
- return tab;
-}
-
-#if defined(USE_ASH)
-// static
-WebContents* Browser::OpenApplicationPanel(
- Profile* profile,
- const Extension* extension,
- const GURL& url_input) {
- GURL url = UrlForExtension(extension, url_input);
- std::string app_name =
- web_app::GenerateApplicationNameFromExtensionId(extension->id());
- gfx::Rect panel_bounds;
- panel_bounds.set_width(extension->launch_width());
- panel_bounds.set_height(extension->launch_height());
- PanelViewAura* panel_view = new PanelViewAura(app_name);
- panel_view->Init(profile, url, panel_bounds);
- return panel_view->WebContents();
-}
-#endif
-
-// static
-WebContents* Browser::OpenApplicationWindow(
- Profile* profile,
- const Extension* extension,
- extension_misc::LaunchContainer container,
- const GURL& url_input,
- Browser** app_browser) {
- DCHECK(!url_input.is_empty() || extension);
- GURL url = UrlForExtension(extension, url_input);
-
- std::string app_name;
- app_name = extension ?
- web_app::GenerateApplicationNameFromExtensionId(extension->id()) :
- web_app::GenerateApplicationNameFromURL(url);
-
- Type type = TYPE_POPUP;
- if (extension &&
- container == extension_misc::LAUNCH_PANEL &&
- AllowPanels(app_name)) {
- type = TYPE_PANEL;
- }
-
- gfx::Rect window_bounds;
- if (extension) {
- window_bounds.set_width(extension->launch_width());
- window_bounds.set_height(extension->launch_height());
- }
-
- CreateParams params(type, profile);
- params.app_name = app_name;
- params.initial_bounds = window_bounds;
-
-#if defined(USE_ASH)
- if (extension &&
- container == extension_misc::LAUNCH_WINDOW) {
- // In ash, LAUNCH_FULLSCREEN launches in a maximized app window and
- // LAUNCH_WINDOW launches in a normal app window.
- ExtensionPrefs::LaunchType launch_type =
- profile->GetExtensionService()->extension_prefs()->GetLaunchType(
- extension->id(), ExtensionPrefs::LAUNCH_DEFAULT);
- if (launch_type == ExtensionPrefs::LAUNCH_FULLSCREEN)
- params.initial_show_state = ui::SHOW_STATE_MAXIMIZED;
- else if (launch_type == ExtensionPrefs::LAUNCH_WINDOW)
- params.initial_show_state = ui::SHOW_STATE_NORMAL;
- }
-#endif
-
- Browser* browser = Browser::CreateWithParams(params);
-
- if (app_browser)
- *app_browser = browser;
-
- TabContentsWrapper* wrapper =
- browser->AddSelectedTabWithURL(url, content::PAGE_TRANSITION_START_PAGE);
- WebContents* contents = wrapper->web_contents();
- contents->GetMutableRendererPrefs()->can_accept_load_drops = false;
- contents->GetRenderViewHost()->SyncRendererPrefs();
- // TODO(stevenjb): Find the right centralized place to do this. Currently it
- // is only done for app tabs in normal browsers through SetExtensionAppById.
- if (extension && type == TYPE_PANEL)
- wrapper->extension_tab_helper()->SetExtensionAppIconById(extension->id());
-
- browser->window()->Show();
-
- // TODO(jcampan): http://crbug.com/8123 we should not need to set the initial
- // focus explicitly.
- contents->GetView()->SetInitialFocus();
- return contents;
-}
-
-WebContents* Browser::OpenAppShortcutWindow(Profile* profile,
- const GURL& url,
- bool update_shortcut) {
- Browser* app_browser;
- WebContents* tab = OpenApplicationWindow(
- profile,
- NULL, // this is a URL app. No extension.
- extension_misc::LAUNCH_WINDOW,
- url,
- &app_browser);
-
- if (!tab)
- return NULL;
-
- if (update_shortcut) {
- // Set UPDATE_SHORTCUT as the pending web app action. This action is picked
- // up in LoadingStateChanged to schedule a GetApplicationInfo. And when
- // the web app info is available, ExtensionTabHelper notifies Browser via
- // OnDidGetApplicationInfo, which calls
- // web_app::UpdateShortcutForTabContents when it sees UPDATE_SHORTCUT as
- // pending web app action.
- app_browser->pending_web_app_action_ = UPDATE_SHORTCUT;
- }
- return tab;
-}
-
-// static
-WebContents* Browser::OpenApplicationTab(Profile* profile,
- const Extension* extension,
- const GURL& override_url,
- WindowOpenDisposition disposition) {
- Browser* browser = browser::FindTabbedBrowser(profile, false);
- WebContents* contents = NULL;
- if (!browser) {
- // No browser for this profile, need to open a new one.
- browser = Browser::Create(profile);
- browser->window()->Show();
- // There's no current tab in this browser window, so add a new one.
- disposition = NEW_FOREGROUND_TAB;
- } else {
- // For existing browser, ensure its window is activated.
- browser->window()->Activate();
- }
-
- // Check the prefs for overridden mode.
- ExtensionService* extension_service = profile->GetExtensionService();
- DCHECK(extension_service);
-
- ExtensionPrefs::LaunchType launch_type =
- extension_service->extension_prefs()->GetLaunchType(
- extension->id(), ExtensionPrefs::LAUNCH_DEFAULT);
- UMA_HISTOGRAM_ENUMERATION("Extensions.AppTabLaunchType", launch_type, 100);
-
- static bool default_apps_trial_exists =
- base::FieldTrialList::TrialExists(kDefaultAppsTrialName);
- if (default_apps_trial_exists) {
- UMA_HISTOGRAM_ENUMERATION(
- base::FieldTrial::MakeName("Extensions.AppTabLaunchType",
- kDefaultAppsTrialName),
- launch_type, 100);
- }
-
- int add_type = TabStripModel::ADD_ACTIVE;
- if (launch_type == ExtensionPrefs::LAUNCH_PINNED)
- add_type |= TabStripModel::ADD_PINNED;
-
- GURL extension_url = UrlForExtension(extension, override_url);
- // TODO(erikkay): START_PAGE doesn't seem like the right transition in all
- // cases.
- browser::NavigateParams params(browser, extension_url,
- content::PAGE_TRANSITION_START_PAGE);
- params.tabstrip_add_types = add_type;
- params.disposition = disposition;
-
- if (disposition == CURRENT_TAB) {
- WebContents* existing_tab = browser->GetSelectedWebContents();
- TabStripModel* model = browser->tab_strip_model();
- int tab_index = model->GetWrapperIndex(existing_tab);
-
- existing_tab->OpenURL(OpenURLParams(
- extension_url,
- content::Referrer(existing_tab->GetURL(),
- WebKit::WebReferrerPolicyDefault),
- disposition, content::PAGE_TRANSITION_LINK, false));
- // Reset existing_tab as OpenURL() may have clobbered it.
- existing_tab = browser->GetSelectedWebContents();
- if (params.tabstrip_add_types & TabStripModel::ADD_PINNED) {
- model->SetTabPinned(tab_index, true);
- // Pinning may have moved the tab.
- tab_index = model->GetWrapperIndex(existing_tab);
- }
- if (params.tabstrip_add_types & TabStripModel::ADD_ACTIVE)
- model->ActivateTabAt(tab_index, true);
-
- contents = existing_tab;
- } else {
- browser::Navigate(&params);
- contents = params.target_contents->web_contents();
- }
-
-#if defined(USE_ASH)
- // In ash, LAUNCH_FULLSCREEN launches in a maximized app window and it should
- // not reach here.
- DCHECK(launch_type != ExtensionPrefs::LAUNCH_FULLSCREEN);
-#else
- // TODO(skerner): If we are already in full screen mode, and the user
- // set the app to open as a regular or pinned tab, what should happen?
- // Today we open the tab, but stay in full screen mode. Should we leave
- // full screen mode in this case?
- if (launch_type == ExtensionPrefs::LAUNCH_FULLSCREEN &&
- !browser->window()->IsFullscreen()) {
- browser->ToggleFullscreenMode();
- }
-#endif
-
- return contents;
-}
-
-// static
void Browser::OpenBookmarkManagerWindow(Profile* profile) {
Browser* browser = Browser::Create(profile);
browser->OpenBookmarkManager();
« no previous file with comments | « chrome/browser/ui/browser.h ('k') | chrome/browser/ui/browser_browsertest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698