Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(447)

Side by Side Diff: extensions/browser/user_script_loader.cc

Issue 959413003: Implement <webview>.addContentScript/removeContentScript API [1] (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Add a test. Created 5 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 "extensions/browser/user_script_loader.h" 5 #include "extensions/browser/user_script_loader.h"
6 6
7 #include <set> 7 #include <set>
8 #include <string> 8 #include <string>
9 9
10 #include "base/bind.h" 10 #include "base/bind.h"
(...skipping 457 matching lines...) Expand 10 before | Expand all | Expand 10 after
468 468
469 content::NotificationService::current()->Notify( 469 content::NotificationService::current()->Notify(
470 extensions::NOTIFICATION_USER_SCRIPTS_UPDATED, 470 extensions::NOTIFICATION_USER_SCRIPTS_UPDATED,
471 content::Source<BrowserContext>(browser_context_), 471 content::Source<BrowserContext>(browser_context_),
472 content::Details<base::SharedMemory>(shared_memory_.get())); 472 content::Details<base::SharedMemory>(shared_memory_.get()));
473 } 473 }
474 474
475 void UserScriptLoader::SendUpdate(content::RenderProcessHost* process, 475 void UserScriptLoader::SendUpdate(content::RenderProcessHost* process,
476 base::SharedMemory* shared_memory, 476 base::SharedMemory* shared_memory,
477 const std::set<HostID>& changed_hosts) { 477 const std::set<HostID>& changed_hosts) {
478 // Don't allow injection of content scripts into <webview>.
479 if (process->IsIsolatedGuest())
Fady Samuel 2015/03/11 11:50:19 Are we sure this doesn't break things now? Content
Xi Han 2015/03/25 19:52:40 I think we won't, since host_id is sent along with
480 return;
481
482 // Make sure we only send user scripts to processes in our browser_context. 478 // Make sure we only send user scripts to processes in our browser_context.
483 if (!ExtensionsBrowserClient::Get()->IsSameContext( 479 if (!ExtensionsBrowserClient::Get()->IsSameContext(
484 browser_context_, process->GetBrowserContext())) 480 browser_context_, process->GetBrowserContext()))
485 return; 481 return;
486 482
487 // If the process is being started asynchronously, early return. We'll end up 483 // If the process is being started asynchronously, early return. We'll end up
488 // calling InitUserScripts when it's created which will call this again. 484 // calling InitUserScripts when it's created which will call this again.
489 base::ProcessHandle handle = process->GetHandle(); 485 base::ProcessHandle handle = process->GetHandle();
490 if (!handle) 486 if (!handle)
491 return; 487 return;
492 488
493 base::SharedMemoryHandle handle_for_process; 489 base::SharedMemoryHandle handle_for_process;
494 if (!shared_memory->ShareToProcess(handle, &handle_for_process)) 490 if (!shared_memory->ShareToProcess(handle, &handle_for_process))
495 return; // This can legitimately fail if the renderer asserts at startup. 491 return; // This can legitimately fail if the renderer asserts at startup.
496 492
497 // TODO(hanxi): update the IPC message to send a set of HostIDs to render. 493 // TODO(hanxi): update the IPC message to send a set of HostIDs to render.
498 // Also, remove this function when the refactor is done on render side. 494 // Also, remove this function when the refactor is done on render side.
499 std::set<std::string> changed_ids_set; 495 std::set<std::string> changed_ids_set;
500 for (const HostID& id : changed_hosts) 496 for (const HostID& id : changed_hosts)
501 changed_ids_set.insert(id.id()); 497 changed_ids_set.insert(id.id());
502 498
503 if (base::SharedMemory::IsHandleValid(handle_for_process)) { 499 if (base::SharedMemory::IsHandleValid(handle_for_process)) {
504 process->Send(new ExtensionMsg_UpdateUserScripts( 500 process->Send(new ExtensionMsg_UpdateUserScripts(
505 handle_for_process, host_id().id(), changed_ids_set)); 501 handle_for_process, host_id().id(), changed_ids_set));
506 } 502 }
507 } 503 }
508 504
509 } // namespace extensions 505 } // namespace extensions
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698