OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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/chrome_content_browser_client_extensions_par
t.h" | 5 #include "chrome/browser/extensions/chrome_content_browser_client_extensions_par
t.h" |
6 | 6 |
7 #include <set> | 7 #include <set> |
8 | 8 |
9 #include "base/command_line.h" | 9 #include "base/command_line.h" |
10 #include "chrome/browser/browser_process.h" | 10 #include "chrome/browser/browser_process.h" |
(...skipping 317 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
328 content::ResourceContext* resource_context, | 328 content::ResourceContext* resource_context, |
329 const GURL& current_url, | 329 const GURL& current_url, |
330 const GURL& new_url) { | 330 const GURL& new_url) { |
331 ProfileIOData* io_data = ProfileIOData::FromResourceContext(resource_context); | 331 ProfileIOData* io_data = ProfileIOData::FromResourceContext(resource_context); |
332 return CrossesExtensionProcessBoundary( | 332 return CrossesExtensionProcessBoundary( |
333 io_data->GetExtensionInfoMap()->extensions(), | 333 io_data->GetExtensionInfoMap()->extensions(), |
334 current_url, new_url, false); | 334 current_url, new_url, false); |
335 } | 335 } |
336 | 336 |
337 // static | 337 // static |
338 std::string ChromeContentBrowserClientExtensionsPart::GetWorkerProcessTitle( | |
339 const GURL& url, content::ResourceContext* context) { | |
340 // Check if it's an extension-created worker, in which case we want to use | |
341 // the name of the extension. | |
342 ProfileIOData* io_data = ProfileIOData::FromResourceContext(context); | |
343 const Extension* extension = | |
344 io_data->GetExtensionInfoMap()->extensions().GetByID(url.host()); | |
345 return extension ? extension->name() : std::string(); | |
346 } | |
347 | |
348 // static | |
349 bool ChromeContentBrowserClientExtensionsPart::ShouldAllowOpenURL( | 338 bool ChromeContentBrowserClientExtensionsPart::ShouldAllowOpenURL( |
350 content::SiteInstance* site_instance, | 339 content::SiteInstance* site_instance, |
351 const GURL& from_url, | 340 const GURL& from_url, |
352 const GURL& to_url, | 341 const GURL& to_url, |
353 bool* result) { | 342 bool* result) { |
354 DCHECK(result); | 343 DCHECK(result); |
355 | 344 |
356 // Do not allow pages from the web or other extensions navigate to | 345 // Do not allow pages from the web or other extensions navigate to |
357 // non-web-accessible extension resources. | 346 // non-web-accessible extension resources. |
358 if (to_url.SchemeIs(kExtensionScheme) && | 347 if (to_url.SchemeIs(kExtensionScheme) && |
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
459 | 448 |
460 BrowserThread::PostTask(BrowserThread::IO, | 449 BrowserThread::PostTask(BrowserThread::IO, |
461 FROM_HERE, | 450 FROM_HERE, |
462 base::Bind(&InfoMap::UnregisterExtensionProcess, | 451 base::Bind(&InfoMap::UnregisterExtensionProcess, |
463 ExtensionSystem::Get(profile)->info_map(), | 452 ExtensionSystem::Get(profile)->info_map(), |
464 extension->id(), | 453 extension->id(), |
465 site_instance->GetProcess()->GetID(), | 454 site_instance->GetProcess()->GetID(), |
466 site_instance->GetId())); | 455 site_instance->GetId())); |
467 } | 456 } |
468 | 457 |
469 void ChromeContentBrowserClientExtensionsPart::WorkerProcessCreated( | |
470 SiteInstance* site_instance, | |
471 int worker_process_id) { | |
472 ExtensionRegistry* extension_registry = | |
473 ExtensionRegistry::Get(site_instance->GetBrowserContext()); | |
474 if (!extension_registry) | |
475 return; | |
476 const Extension* extension = | |
477 extension_registry->enabled_extensions().GetExtensionOrAppByURL( | |
478 site_instance->GetSiteURL()); | |
479 if (!extension) | |
480 return; | |
481 ExtensionSystem* extension_system = | |
482 ExtensionSystem::Get(site_instance->GetBrowserContext()); | |
483 extension_system->info_map()->RegisterExtensionWorkerProcess( | |
484 extension->id(), worker_process_id, site_instance->GetId()); | |
485 } | |
486 | |
487 void ChromeContentBrowserClientExtensionsPart::WorkerProcessTerminated( | |
488 SiteInstance* site_instance, | |
489 int worker_process_id) { | |
490 ExtensionSystem* extension_system = | |
491 ExtensionSystem::Get(site_instance->GetBrowserContext()); | |
492 extension_system->info_map()->UnregisterExtensionWorkerProcess( | |
493 worker_process_id); | |
494 } | |
495 | |
496 void ChromeContentBrowserClientExtensionsPart::OverrideWebkitPrefs( | 458 void ChromeContentBrowserClientExtensionsPart::OverrideWebkitPrefs( |
497 RenderViewHost* rvh, | 459 RenderViewHost* rvh, |
498 const GURL& url, | 460 const GURL& url, |
499 WebPreferences* web_prefs) { | 461 WebPreferences* web_prefs) { |
500 Profile* profile = | 462 Profile* profile = |
501 Profile::FromBrowserContext(rvh->GetProcess()->GetBrowserContext()); | 463 Profile::FromBrowserContext(rvh->GetProcess()->GetBrowserContext()); |
502 | 464 |
503 ExtensionService* service = | 465 ExtensionService* service = |
504 ExtensionSystem::Get(profile)->extension_service(); | 466 ExtensionSystem::Get(profile)->extension_service(); |
505 if (!service) | 467 if (!service) |
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
562 content::RenderProcessHost* process, | 524 content::RenderProcessHost* process, |
563 Profile* profile) { | 525 Profile* profile) { |
564 if (!process) | 526 if (!process) |
565 return; | 527 return; |
566 DCHECK(profile); | 528 DCHECK(profile); |
567 if (ProcessMap::Get(profile)->Contains(process->GetID())) | 529 if (ProcessMap::Get(profile)->Contains(process->GetID())) |
568 command_line->AppendSwitch(switches::kExtensionProcess); | 530 command_line->AppendSwitch(switches::kExtensionProcess); |
569 } | 531 } |
570 | 532 |
571 } // namespace extensions | 533 } // namespace extensions |
OLD | NEW |