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

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

Issue 1909773002: Convert //extensions/browser from scoped_ptr to std::unique_ptr (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: . Created 4 years, 8 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
« no previous file with comments | « extensions/browser/user_script_loader.h ('k') | extensions/browser/value_store/lazy_leveldb.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 <stddef.h> 7 #include <stddef.h>
8 8
9 #include <set> 9 #include <set>
10 #include <string> 10 #include <string>
11 #include <utility> 11 #include <utility>
12 12
13 #include "base/memory/ptr_util.h"
13 #include "base/version.h" 14 #include "base/version.h"
14 #include "content/public/browser/browser_context.h" 15 #include "content/public/browser/browser_context.h"
15 #include "content/public/browser/browser_thread.h" 16 #include "content/public/browser/browser_thread.h"
16 #include "content/public/browser/notification_service.h" 17 #include "content/public/browser/notification_service.h"
17 #include "content/public/browser/notification_types.h" 18 #include "content/public/browser/notification_types.h"
18 #include "content/public/browser/render_process_host.h" 19 #include "content/public/browser/render_process_host.h"
19 #include "extensions/browser/extensions_browser_client.h" 20 #include "extensions/browser/extensions_browser_client.h"
20 #include "extensions/browser/notification_types.h" 21 #include "extensions/browser/notification_types.h"
21 #include "extensions/common/extension_messages.h" 22 #include "extensions/common/extension_messages.h"
22 23
(...skipping 246 matching lines...) Expand 10 before | Expand all | Expand 10 after
269 base::Bind(&UserScriptLoader::OnScriptsLoaded, 270 base::Bind(&UserScriptLoader::OnScriptsLoaded,
270 weak_factory_.GetWeakPtr())); 271 weak_factory_.GetWeakPtr()));
271 272
272 clear_scripts_ = false; 273 clear_scripts_ = false;
273 added_scripts_.clear(); 274 added_scripts_.clear();
274 removed_scripts_.clear(); 275 removed_scripts_.clear();
275 user_scripts_.reset(); 276 user_scripts_.reset();
276 } 277 }
277 278
278 // static 279 // static
279 scoped_ptr<base::SharedMemory> UserScriptLoader::Serialize( 280 std::unique_ptr<base::SharedMemory> UserScriptLoader::Serialize(
280 const UserScriptList& scripts) { 281 const UserScriptList& scripts) {
281 base::Pickle pickle; 282 base::Pickle pickle;
282 pickle.WriteUInt32(scripts.size()); 283 pickle.WriteUInt32(scripts.size());
283 for (const UserScript& script : scripts) { 284 for (const UserScript& script : scripts) {
284 // TODO(aa): This can be replaced by sending content script metadata to 285 // TODO(aa): This can be replaced by sending content script metadata to
285 // renderers along with other extension data in ExtensionMsg_Loaded. 286 // renderers along with other extension data in ExtensionMsg_Loaded.
286 // See crbug.com/70516. 287 // See crbug.com/70516.
287 script.Pickle(&pickle); 288 script.Pickle(&pickle);
288 // Write scripts as 'data' so that we can read it out in the slave without 289 // Write scripts as 'data' so that we can read it out in the slave without
289 // allocating a new string. 290 // allocating a new string.
290 for (const UserScript::File& script_file : script.js_scripts()) { 291 for (const UserScript::File& script_file : script.js_scripts()) {
291 base::StringPiece contents = script_file.GetContent(); 292 base::StringPiece contents = script_file.GetContent();
292 pickle.WriteData(contents.data(), contents.length()); 293 pickle.WriteData(contents.data(), contents.length());
293 } 294 }
294 for (const UserScript::File& script_file : script.css_scripts()) { 295 for (const UserScript::File& script_file : script.css_scripts()) {
295 base::StringPiece contents = script_file.GetContent(); 296 base::StringPiece contents = script_file.GetContent();
296 pickle.WriteData(contents.data(), contents.length()); 297 pickle.WriteData(contents.data(), contents.length());
297 } 298 }
298 } 299 }
299 300
300 // Create the shared memory object. 301 // Create the shared memory object.
301 base::SharedMemory shared_memory; 302 base::SharedMemory shared_memory;
302 303
303 base::SharedMemoryCreateOptions options; 304 base::SharedMemoryCreateOptions options;
304 options.size = pickle.size(); 305 options.size = pickle.size();
305 options.share_read_only = true; 306 options.share_read_only = true;
306 if (!shared_memory.Create(options)) 307 if (!shared_memory.Create(options))
307 return scoped_ptr<base::SharedMemory>(); 308 return std::unique_ptr<base::SharedMemory>();
308 309
309 if (!shared_memory.Map(pickle.size())) 310 if (!shared_memory.Map(pickle.size()))
310 return scoped_ptr<base::SharedMemory>(); 311 return std::unique_ptr<base::SharedMemory>();
311 312
312 // Copy the pickle to shared memory. 313 // Copy the pickle to shared memory.
313 memcpy(shared_memory.memory(), pickle.data(), pickle.size()); 314 memcpy(shared_memory.memory(), pickle.data(), pickle.size());
314 315
315 base::SharedMemoryHandle readonly_handle; 316 base::SharedMemoryHandle readonly_handle;
316 if (!shared_memory.ShareReadOnlyToProcess(base::GetCurrentProcessHandle(), 317 if (!shared_memory.ShareReadOnlyToProcess(base::GetCurrentProcessHandle(),
317 &readonly_handle)) 318 &readonly_handle))
318 return scoped_ptr<base::SharedMemory>(); 319 return std::unique_ptr<base::SharedMemory>();
319 320
320 return make_scoped_ptr(new base::SharedMemory(readonly_handle, 321 return base::WrapUnique(new base::SharedMemory(readonly_handle,
321 /*read_only=*/true)); 322 /*read_only=*/true));
322 } 323 }
323 324
324 void UserScriptLoader::AddObserver(Observer* observer) { 325 void UserScriptLoader::AddObserver(Observer* observer) {
325 observers_.AddObserver(observer); 326 observers_.AddObserver(observer);
326 } 327 }
327 328
328 void UserScriptLoader::RemoveObserver(Observer* observer) { 329 void UserScriptLoader::RemoveObserver(Observer* observer) {
329 observers_.RemoveObserver(observer); 330 observers_.RemoveObserver(observer);
330 } 331 }
331 332
332 void UserScriptLoader::SetReady(bool ready) { 333 void UserScriptLoader::SetReady(bool ready) {
333 bool was_ready = ready_; 334 bool was_ready = ready_;
334 ready_ = ready; 335 ready_ = ready;
335 if (ready_ && !was_ready) 336 if (ready_ && !was_ready)
336 AttemptLoad(); 337 AttemptLoad();
337 } 338 }
338 339
339 void UserScriptLoader::OnScriptsLoaded( 340 void UserScriptLoader::OnScriptsLoaded(
340 scoped_ptr<UserScriptList> user_scripts, 341 std::unique_ptr<UserScriptList> user_scripts,
341 scoped_ptr<base::SharedMemory> shared_memory) { 342 std::unique_ptr<base::SharedMemory> shared_memory) {
342 user_scripts_.reset(user_scripts.release()); 343 user_scripts_.reset(user_scripts.release());
343 if (pending_load_) { 344 if (pending_load_) {
344 // While we were loading, there were further changes. Don't bother 345 // While we were loading, there were further changes. Don't bother
345 // notifying about these scripts and instead just immediately reload. 346 // notifying about these scripts and instead just immediately reload.
346 pending_load_ = false; 347 pending_load_ = false;
347 StartLoad(); 348 StartLoad();
348 return; 349 return;
349 } 350 }
350 351
351 if (shared_memory.get() == NULL) { 352 if (shared_memory.get() == NULL) {
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
400 if (!shared_memory->ShareToProcess(handle, &handle_for_process)) 401 if (!shared_memory->ShareToProcess(handle, &handle_for_process))
401 return; // This can legitimately fail if the renderer asserts at startup. 402 return; // This can legitimately fail if the renderer asserts at startup.
402 403
403 if (base::SharedMemory::IsHandleValid(handle_for_process)) { 404 if (base::SharedMemory::IsHandleValid(handle_for_process)) {
404 process->Send(new ExtensionMsg_UpdateUserScripts( 405 process->Send(new ExtensionMsg_UpdateUserScripts(
405 handle_for_process, host_id(), changed_hosts, whitelisted_only)); 406 handle_for_process, host_id(), changed_hosts, whitelisted_only));
406 } 407 }
407 } 408 }
408 409
409 } // namespace extensions 410 } // namespace extensions
OLDNEW
« no previous file with comments | « extensions/browser/user_script_loader.h ('k') | extensions/browser/value_store/lazy_leveldb.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698