X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=src%2Fchrome%2Fbrowser%2Fextensions%2Ftab_helper.cc;h=fda6175796dd255c2253775a8135e00c18a55138;hb=004985e17e624662a4c85c76a7654039dc83f028;hp=16eed180460110d309c2a45380ad0dca1b717e1a;hpb=2f108dbacb161091e42a3479f4e171339b7e7623;p=platform%2Fframework%2Fweb%2Fcrosswalk.git diff --git a/src/chrome/browser/extensions/tab_helper.cc b/src/chrome/browser/extensions/tab_helper.cc index 16eed18..fda6175 100644 --- a/src/chrome/browser/extensions/tab_helper.cc +++ b/src/chrome/browser/extensions/tab_helper.cc @@ -14,7 +14,6 @@ #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" @@ -34,14 +33,11 @@ #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" @@ -55,21 +51,26 @@ #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; @@ -150,7 +151,7 @@ void TabHelper::CreateApplicationShortcuts() { } void TabHelper::CreateHostedAppFromWebContents() { - DCHECK(CanCreateApplicationShortcuts()); + DCHECK(CanCreateBookmarkApp()); NavigationEntry* entry = web_contents()->GetController().GetLastCommittedEntry(); if (!entry) @@ -172,6 +173,15 @@ bool TabHelper::CanCreateApplicationShortcuts() const { #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) @@ -243,34 +253,36 @@ void TabHelper::DidNavigateMainFrame( } #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) { @@ -329,7 +341,7 @@ void TabHelper::OnDidGetApplicationInfo(int32 page_id, switch (pending_web_app_action_) { case CREATE_SHORTCUT: { chrome::ShowCreateWebAppShortcutsDialog( - web_contents()->GetView()->GetTopLevelNativeWindow(), + web_contents()->GetTopLevelNativeWindow(), web_contents()); break; }