| Index: chrome/browser/extensions/extension_tab_helper.cc
|
| diff --git a/chrome/browser/extensions/extension_tab_helper.cc b/chrome/browser/extensions/extension_tab_helper.cc
|
| index b45b0adf2dcbf365ec09edfd265de710a529dbd7..ab65db373730be47ac21dff7e8ce770f590c19b0 100644
|
| --- a/chrome/browser/extensions/extension_tab_helper.cc
|
| +++ b/chrome/browser/extensions/extension_tab_helper.cc
|
| @@ -137,6 +137,8 @@ bool ExtensionTabHelper::OnMessageReceived(const IPC::Message& message) {
|
| OnInlineWebstoreInstall)
|
| IPC_MESSAGE_HANDLER(ExtensionHostMsg_GetAppNotifyChannel,
|
| OnGetAppNotifyChannel)
|
| + IPC_MESSAGE_HANDLER(ExtensionHostMsg_GetAppInstallState,
|
| + OnGetAppInstallState);
|
| IPC_MESSAGE_HANDLER(ExtensionHostMsg_Request, OnRequest)
|
| IPC_MESSAGE_UNHANDLED(handled = false)
|
| IPC_END_MESSAGE_MAP()
|
| @@ -223,6 +225,28 @@ void ExtensionTabHelper::OnGetAppNotifyChannel(
|
| // We'll get called back in AppNotifyChannelSetupComplete.
|
| }
|
|
|
| +void ExtensionTabHelper::OnGetAppInstallState(const GURL& requestor_url,
|
| + int return_route_id,
|
| + int callback_id) {
|
| + Profile* profile =
|
| + Profile::FromBrowserContext(web_contents()->GetBrowserContext());
|
| + ExtensionService* extension_service = profile->GetExtensionService();
|
| + const ExtensionSet* extensions = extension_service->extensions();
|
| + const ExtensionSet* disabled = extension_service->disabled_extensions();
|
| +
|
| + ExtensionURLInfo url(requestor_url);
|
| + std::string state;
|
| + if (extensions->GetHostedAppByURL(url))
|
| + state = extension_misc::kAppStateInstalled;
|
| + else if (disabled->GetHostedAppByURL(url))
|
| + state = extension_misc::kAppStateDisabled;
|
| + else
|
| + state = extension_misc::kAppStateNotInstalled;
|
| +
|
| + Send(new ExtensionMsg_GetAppInstallStateResponse(
|
| + return_route_id, state, callback_id));
|
| +}
|
| +
|
| void ExtensionTabHelper::AppNotifyChannelSetupComplete(
|
| const std::string& channel_id,
|
| const std::string& error,
|
|
|