#include "chrome/browser/extensions/api/declarative_content/content_rules_registry.h"
#include "chrome/browser/extensions/api/webstore/webstore_api.h"
#include "chrome/browser/extensions/bookmark_app_helper.h"
-#include "chrome/browser/extensions/crx_installer.h"
#include "chrome/browser/extensions/error_console/error_console.h"
#include "chrome/browser/extensions/extension_action.h"
#include "chrome/browser/extensions/extension_action_manager.h"
#include "chrome/browser/ui/browser_finder.h"
#include "chrome/browser/ui/browser_window.h"
#include "chrome/browser/ui/host_desktop.h"
-#include "chrome/browser/ui/web_applications/web_app_ui.h"
#include "chrome/browser/web_applications/web_app.h"
#include "chrome/common/chrome_switches.h"
#include "chrome/common/extensions/chrome_extension_messages.h"
#include "chrome/common/extensions/extension_constants.h"
-#include "chrome/common/extensions/extension_icon_set.h"
#include "chrome/common/extensions/manifest_handlers/app_launch_info.h"
-#include "chrome/common/extensions/manifest_handlers/icons_handler.h"
#include "chrome/common/render_messages.h"
#include "chrome/common/url_constants.h"
#include "content/public/browser/invalidate_type.h"
#include "content/public/browser/render_view_host.h"
#include "content/public/browser/render_widget_host_view.h"
#include "content/public/browser/web_contents.h"
-#include "content/public/browser/web_contents_view.h"
#include "content/public/common/frame_navigate_params.h"
#include "extensions/browser/extension_error.h"
#include "extensions/browser/extension_registry.h"
#include "extensions/browser/extension_system.h"
#include "extensions/common/extension.h"
+#include "extensions/common/extension_icon_set.h"
#include "extensions/common/extension_messages.h"
#include "extensions/common/extension_resource.h"
#include "extensions/common/extension_urls.h"
#include "extensions/common/feature_switch.h"
+#include "extensions/common/manifest_handlers/icons_handler.h"
#if defined(OS_CHROMEOS)
#include "chrome/browser/ui/ash/launcher/chrome_launcher_controller.h"
#endif
+#if defined(OS_WIN)
+#include "chrome/browser/web_applications/web_app_win.h"
+#endif
+
using content::NavigationController;
using content::NavigationEntry;
using content::RenderViewHost;
}
void TabHelper::CreateHostedAppFromWebContents() {
- DCHECK(CanCreateApplicationShortcuts());
+ DCHECK(CanCreateBookmarkApp());
NavigationEntry* entry =
web_contents()->GetController().GetLastCommittedEntry();
if (!entry)
#endif
}
+bool TabHelper::CanCreateBookmarkApp() const {
+#if defined(OS_MACOSX)
+ return false;
+#else
+ return IsValidBookmarkAppUrl(web_contents()->GetURL()) &&
+ pending_web_app_action_ == NONE;
+#endif
+}
+
void TabHelper::SetExtensionApp(const Extension* extension) {
DCHECK(!extension || AppLaunchInfo::GetFullLaunchURL(extension).is_valid());
if (extension_app_ == extension)
}
#endif // defined(ENABLE_EXTENSIONS)
- Profile* profile =
- Profile::FromBrowserContext(web_contents()->GetBrowserContext());
- ExtensionService* service = profile->GetExtensionService();
- if (!service)
- return;
+ content::BrowserContext* context = web_contents()->GetBrowserContext();
+ ExtensionRegistry* registry = ExtensionRegistry::Get(context);
+ const ExtensionSet& enabled_extensions = registry->enabled_extensions();
if (CommandLine::ForCurrentProcess()->HasSwitch(
switches::kEnableStreamlinedHostedApps)) {
#if !defined(OS_ANDROID)
Browser* browser = chrome::FindBrowserWithWebContents(web_contents());
if (browser && browser->is_app()) {
- SetExtensionApp(service->GetInstalledExtension(
- web_app::GetExtensionIdFromApplicationName(browser->app_name())));
+ SetExtensionApp(registry->GetExtensionById(
+ web_app::GetExtensionIdFromApplicationName(browser->app_name()),
+ ExtensionRegistry::EVERYTHING));
} else {
- UpdateExtensionAppIcon(service->GetInstalledExtensionByUrl(params.url));
+ UpdateExtensionAppIcon(
+ enabled_extensions.GetExtensionOrAppByURL(params.url));
}
#endif
} else {
- UpdateExtensionAppIcon(service->GetInstalledExtensionByUrl(params.url));
+ UpdateExtensionAppIcon(
+ enabled_extensions.GetExtensionOrAppByURL(params.url));
}
if (details.is_in_page)
return;
ExtensionActionManager* extension_action_manager =
- ExtensionActionManager::Get(profile);
- for (ExtensionSet::const_iterator it = service->extensions()->begin();
- it != service->extensions()->end(); ++it) {
+ ExtensionActionManager::Get(Profile::FromBrowserContext(context));
+ for (ExtensionSet::const_iterator it = enabled_extensions.begin();
+ it != enabled_extensions.end();
+ ++it) {
ExtensionAction* browser_action =
extension_action_manager->GetBrowserAction(*it->get());
if (browser_action) {
switch (pending_web_app_action_) {
case CREATE_SHORTCUT: {
chrome::ShowCreateWebAppShortcutsDialog(
- web_contents()->GetView()->GetTopLevelNativeWindow(),
+ web_contents()->GetTopLevelNativeWindow(),
web_contents());
break;
}