OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "chrome/browser/extensions/extension_tab_helper.h" | 5 #include "chrome/browser/extensions/extension_tab_helper.h" |
6 | 6 |
7 #include "chrome/browser/extensions/extension_service.h" | 7 #include "chrome/browser/extensions/extension_service.h" |
8 #include "chrome/browser/extensions/webstore_inline_installer.h" | 8 #include "chrome/browser/extensions/webstore_inline_installer.h" |
9 #include "chrome/browser/profiles/profile.h" | 9 #include "chrome/browser/profiles/profile.h" |
10 #include "chrome/browser/sessions/restore_tab_helper.h" | 10 #include "chrome/browser/sessions/restore_tab_helper.h" |
(...skipping 161 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
172 content::RenderProcessHost* process = | 172 content::RenderProcessHost* process = |
173 tab_contents_wrapper()->render_view_host()->process(); | 173 tab_contents_wrapper()->render_view_host()->process(); |
174 const Extension* extension = | 174 const Extension* extension = |
175 extension_service->GetInstalledApp(requestor_url); | 175 extension_service->GetInstalledApp(requestor_url); |
176 bool allowed = | 176 bool allowed = |
177 extension && | 177 extension && |
178 extension->HasAPIPermission( | 178 extension->HasAPIPermission( |
179 ExtensionAPIPermission::kExperimental) && | 179 ExtensionAPIPermission::kExperimental) && |
180 process_map->Contains(extension->id(), process->GetID()); | 180 process_map->Contains(extension->id(), process->GetID()); |
181 if (!allowed) { | 181 if (!allowed) { |
182 AppNotifyChannelSetupComplete("", "permission_error", return_route_id, | 182 Send(new ExtensionMsg_GetAppNotifyChannelResponse( |
183 callback_id); | 183 return_route_id, "", "permission_error", callback_id)); |
184 return; | 184 return; |
185 } | 185 } |
186 | 186 |
187 AppNotifyChannelUI* ui = new AppNotifyChannelUIImpl( | 187 AppNotifyChannelUI* ui = new AppNotifyChannelUIImpl( |
188 GetBrowser(), tab_contents_wrapper(), extension->name()); | 188 GetBrowser(), tab_contents_wrapper(), extension->name()); |
189 | 189 |
190 scoped_refptr<AppNotifyChannelSetup> channel_setup( | 190 scoped_refptr<AppNotifyChannelSetup> channel_setup( |
191 new AppNotifyChannelSetup(profile, | 191 new AppNotifyChannelSetup(profile, |
192 extension->id(), | 192 extension->id(), |
193 client_id, | 193 client_id, |
194 requestor_url, | 194 requestor_url, |
195 return_route_id, | 195 return_route_id, |
196 callback_id, | 196 callback_id, |
197 ui, | 197 ui, |
198 this->AsWeakPtr())); | 198 this->AsWeakPtr())); |
199 channel_setup->Start(); | 199 channel_setup->Start(); |
200 // We'll get called back in AppNotifyChannelSetupComplete. | 200 // We'll get called back in AppNotifyChannelSetupComplete. |
201 } | 201 } |
202 | 202 |
203 void ExtensionTabHelper::AppNotifyChannelSetupComplete( | 203 void ExtensionTabHelper::AppNotifyChannelSetupComplete( |
204 const std::string& client_id, const std::string& error, int return_route_id, | 204 const std::string& channel_id, |
205 int callback_id) { | 205 const std::string& error, |
| 206 const AppNotifyChannelSetup* setup) { |
| 207 CHECK(setup); |
| 208 |
| 209 // If the setup was successful, record that fact in ExtensionService. |
| 210 if (!channel_id.empty() && error.empty()) { |
| 211 Profile* profile = |
| 212 Profile::FromBrowserContext(tab_contents()->browser_context()); |
| 213 ExtensionService* service = profile->GetExtensionService(); |
| 214 if (service->GetExtensionById(setup->extension_id(), true)) |
| 215 service->SetAppNotificationSetupDone(setup->extension_id(), |
| 216 setup->client_id()); |
| 217 } |
| 218 |
206 Send(new ExtensionMsg_GetAppNotifyChannelResponse( | 219 Send(new ExtensionMsg_GetAppNotifyChannelResponse( |
207 return_route_id, client_id, error, callback_id)); | 220 setup->return_route_id(), channel_id, error, setup->callback_id())); |
208 } | 221 } |
209 | 222 |
210 void ExtensionTabHelper::OnRequest( | 223 void ExtensionTabHelper::OnRequest( |
211 const ExtensionHostMsg_Request_Params& request) { | 224 const ExtensionHostMsg_Request_Params& request) { |
212 extension_function_dispatcher_.Dispatch(request, | 225 extension_function_dispatcher_.Dispatch(request, |
213 tab_contents()->render_view_host()); | 226 tab_contents()->render_view_host()); |
214 } | 227 } |
215 | 228 |
216 void ExtensionTabHelper::UpdateExtensionAppIcon(const Extension* extension) { | 229 void ExtensionTabHelper::UpdateExtensionAppIcon(const Extension* extension) { |
217 extension_app_icon_.reset(); | 230 extension_app_icon_.reset(); |
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
267 } | 280 } |
268 | 281 |
269 TabContents* ExtensionTabHelper::GetAssociatedTabContents() const { | 282 TabContents* ExtensionTabHelper::GetAssociatedTabContents() const { |
270 return tab_contents(); | 283 return tab_contents(); |
271 } | 284 } |
272 | 285 |
273 gfx::NativeView ExtensionTabHelper::GetNativeViewOfHost() { | 286 gfx::NativeView ExtensionTabHelper::GetNativeViewOfHost() { |
274 RenderWidgetHostView* rwhv = tab_contents()->GetRenderWidgetHostView(); | 287 RenderWidgetHostView* rwhv = tab_contents()->GetRenderWidgetHostView(); |
275 return rwhv ? rwhv->GetNativeView() : NULL; | 288 return rwhv ? rwhv->GetNativeView() : NULL; |
276 } | 289 } |
OLD | NEW |