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

Side by Side Diff: chrome/browser/extensions/extension_toolbar_model.cc

Issue 16295003: Update chrome/ to use scoped_refptr<T>::get() rather than implicit "operator T*" (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebased Created 7 years, 6 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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_toolbar_model.h" 5 #include "chrome/browser/extensions/extension_toolbar_model.h"
6 6
7 #include "base/prefs/pref_service.h" 7 #include "base/prefs/pref_service.h"
8 #include "chrome/browser/extensions/api/extension_action/extension_action_api.h" 8 #include "chrome/browser/extensions/api/extension_action/extension_action_api.h"
9 #include "chrome/browser/extensions/browser_event_router.h" 9 #include "chrome/browser/extensions/browser_event_router.h"
10 #include "chrome/browser/extensions/extension_action.h" 10 #include "chrome/browser/extensions/extension_action.h"
(...skipping 334 matching lines...) Expand 10 before | Expand all | Expand 10 after
345 extensions::ExtensionIdList::const_iterator pos = 345 extensions::ExtensionIdList::const_iterator pos =
346 std::find(positions.begin(), positions.end(), extension->id()); 346 std::find(positions.begin(), positions.end(), extension->id());
347 if (pos != positions.end()) 347 if (pos != positions.end())
348 sorted[pos - positions.begin()] = extension; 348 sorted[pos - positions.begin()] = extension;
349 else 349 else
350 unsorted.push_back(make_scoped_refptr(extension)); 350 unsorted.push_back(make_scoped_refptr(extension));
351 } 351 }
352 352
353 // Erase current icons. 353 // Erase current icons.
354 for (size_t i = 0; i < toolbar_items_.size(); i++) { 354 for (size_t i = 0; i < toolbar_items_.size(); i++) {
355 FOR_EACH_OBSERVER(Observer, observers_, 355 FOR_EACH_OBSERVER(
356 BrowserActionRemoved(toolbar_items_[i])); 356 Observer, observers_, BrowserActionRemoved(toolbar_items_[i].get()));
357 } 357 }
358 toolbar_items_.clear(); 358 toolbar_items_.clear();
359 359
360 // Merge the lists. 360 // Merge the lists.
361 toolbar_items_.reserve(sorted.size() + unsorted.size()); 361 toolbar_items_.reserve(sorted.size() + unsorted.size());
362 for (ExtensionList::const_iterator iter = sorted.begin(); 362 for (ExtensionList::const_iterator iter = sorted.begin();
363 iter != sorted.end(); ++iter) { 363 iter != sorted.end(); ++iter) {
364 // It's possible for the extension order to contain items that aren't 364 // It's possible for the extension order to contain items that aren't
365 // actually loaded on this machine. For example, when extension sync is on, 365 // actually loaded on this machine. For example, when extension sync is on,
366 // we sync the extension order as-is but double-check with the user before 366 // we sync the extension order as-is but double-check with the user before
367 // syncing NPAPI-containing extensions, so if one of those is not actually 367 // syncing NPAPI-containing extensions, so if one of those is not actually
368 // synced, we'll get a NULL in the list. This sort of case can also happen 368 // synced, we'll get a NULL in the list. This sort of case can also happen
369 // if some error prevents an extension from loading. 369 // if some error prevents an extension from loading.
370 if (*iter != NULL) 370 if (iter->get() != NULL)
371 toolbar_items_.push_back(*iter); 371 toolbar_items_.push_back(*iter);
372 } 372 }
373 toolbar_items_.insert(toolbar_items_.end(), unsorted.begin(), 373 toolbar_items_.insert(toolbar_items_.end(), unsorted.begin(),
374 unsorted.end()); 374 unsorted.end());
375 375
376 // Inform observers. 376 // Inform observers.
377 for (size_t i = 0; i < toolbar_items_.size(); i++) { 377 for (size_t i = 0; i < toolbar_items_.size(); i++) {
378 FOR_EACH_OBSERVER(Observer, observers_, 378 FOR_EACH_OBSERVER(
379 BrowserActionAdded(toolbar_items_[i], i)); 379 Observer, observers_, BrowserActionAdded(toolbar_items_[i].get(), i));
380 } 380 }
381 } 381 }
382 382
383 void ExtensionToolbarModel::FillExtensionList( 383 void ExtensionToolbarModel::FillExtensionList(
384 const extensions::ExtensionIdList& order) { 384 const extensions::ExtensionIdList& order) {
385 toolbar_items_.clear(); 385 toolbar_items_.clear();
386 toolbar_items_.reserve(order.size()); 386 toolbar_items_.reserve(order.size());
387 for (size_t i = 0; i < order.size(); ++i) { 387 for (size_t i = 0; i < order.size(); ++i) {
388 const extensions::Extension* extension = 388 const extensions::Extension* extension =
389 service_->GetExtensionById(order[i], false); 389 service_->GetExtensionById(order[i], false);
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
452 452
453 if (last_known_positions_.size() > pref_position_size) { 453 if (last_known_positions_.size() > pref_position_size) {
454 // Need to update pref because we have extra icons. But can't call 454 // Need to update pref because we have extra icons. But can't call
455 // UpdatePrefs() directly within observation closure. 455 // UpdatePrefs() directly within observation closure.
456 base::MessageLoop::current()->PostTask( 456 base::MessageLoop::current()->PostTask(
457 FROM_HERE, 457 FROM_HERE,
458 base::Bind(&ExtensionToolbarModel::UpdatePrefs, 458 base::Bind(&ExtensionToolbarModel::UpdatePrefs,
459 weak_ptr_factory_.GetWeakPtr())); 459 weak_ptr_factory_.GetWeakPtr()));
460 } 460 }
461 } 461 }
OLDNEW
« no previous file with comments | « chrome/browser/extensions/extension_system.cc ('k') | chrome/browser/extensions/extension_toolbar_model_browsertest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698