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

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

Issue 15987009: Update chrome/ to use WeakPtr<T>::get() instead of implicit "operator T*" (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: 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_action.h" 5 #include "chrome/browser/extensions/extension_action.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/logging.h" 10 #include "base/logging.h"
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
63 base::WeakPtr<ExtensionAction::IconAnimation> animation) 63 base::WeakPtr<ExtensionAction::IconAnimation> animation)
64 : image_(image), 64 : image_(image),
65 animation_(animation) { 65 animation_(animation) {
66 } 66 }
67 67
68 private: 68 private:
69 virtual ~AnimatedIconImageSource() {} 69 virtual ~AnimatedIconImageSource() {}
70 70
71 virtual gfx::ImageSkiaRep GetImageForScale(ui::ScaleFactor scale) OVERRIDE { 71 virtual gfx::ImageSkiaRep GetImageForScale(ui::ScaleFactor scale) OVERRIDE {
72 gfx::ImageSkiaRep original_rep = image_.GetRepresentation(scale); 72 gfx::ImageSkiaRep original_rep = image_.GetRepresentation(scale);
73 if (!animation_) 73 if (!animation_.get())
74 return original_rep; 74 return original_rep;
75 75
76 // Original representation's scale factor may be different from scale 76 // Original representation's scale factor may be different from scale
77 // factor passed to this method. We want to use the former (since we are 77 // factor passed to this method. We want to use the former (since we are
78 // using bitmap for that scale). 78 // using bitmap for that scale).
79 return gfx::ImageSkiaRep( 79 return gfx::ImageSkiaRep(
80 animation_->Apply(original_rep.sk_bitmap()), 80 animation_->Apply(original_rep.sk_bitmap()),
81 original_rep.scale_factor()); 81 original_rep.scale_factor());
82 } 82 }
83 83
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
142 142
143 void ExtensionAction::IconAnimation::AnimateToState(double state) { 143 void ExtensionAction::IconAnimation::AnimateToState(double state) {
144 FOR_EACH_OBSERVER(Observer, observers_, OnIconChanged()); 144 FOR_EACH_OBSERVER(Observer, observers_, OnIconChanged());
145 } 145 }
146 146
147 ExtensionAction::IconAnimation::ScopedObserver::ScopedObserver( 147 ExtensionAction::IconAnimation::ScopedObserver::ScopedObserver(
148 const base::WeakPtr<IconAnimation>& icon_animation, 148 const base::WeakPtr<IconAnimation>& icon_animation,
149 Observer* observer) 149 Observer* observer)
150 : icon_animation_(icon_animation), 150 : icon_animation_(icon_animation),
151 observer_(observer) { 151 observer_(observer) {
152 if (icon_animation) 152 if (icon_animation.get())
153 icon_animation->AddObserver(observer); 153 icon_animation->AddObserver(observer);
154 } 154 }
155 155
156 ExtensionAction::IconAnimation::ScopedObserver::~ScopedObserver() { 156 ExtensionAction::IconAnimation::ScopedObserver::~ScopedObserver() {
157 if (icon_animation_) 157 if (icon_animation_.get())
158 icon_animation_->RemoveObserver(observer_); 158 icon_animation_->RemoveObserver(observer_);
159 } 159 }
160 160
161 ExtensionAction::ExtensionAction( 161 ExtensionAction::ExtensionAction(
162 const std::string& extension_id, 162 const std::string& extension_id,
163 extensions::ActionInfo::Type action_type, 163 extensions::ActionInfo::Type action_type,
164 const extensions::ActionInfo& manifest_data) 164 const extensions::ActionInfo& manifest_data)
165 : extension_id_(extension_id), 165 : extension_id_(extension_id),
166 action_type_(action_type), 166 action_type_(action_type),
167 has_changed_(false) { 167 has_changed_(false) {
(...skipping 179 matching lines...) Expand 10 before | Expand all | Expand 10 after
347 return ui::ResourceBundle::GetSharedInstance().GetImageNamed( 347 return ui::ResourceBundle::GetSharedInstance().GetImageNamed(
348 IDR_EXTENSIONS_FAVICON).ToImageSkia()->width(); 348 IDR_EXTENSIONS_FAVICON).ToImageSkia()->width();
349 } 349 }
350 350
351 base::WeakPtr<ExtensionAction::IconAnimation> ExtensionAction::GetIconAnimation( 351 base::WeakPtr<ExtensionAction::IconAnimation> ExtensionAction::GetIconAnimation(
352 int tab_id) const { 352 int tab_id) const {
353 std::map<int, base::WeakPtr<IconAnimation> >::iterator it = 353 std::map<int, base::WeakPtr<IconAnimation> >::iterator it =
354 icon_animation_.find(tab_id); 354 icon_animation_.find(tab_id);
355 if (it == icon_animation_.end()) 355 if (it == icon_animation_.end())
356 return base::WeakPtr<ExtensionAction::IconAnimation>(); 356 return base::WeakPtr<ExtensionAction::IconAnimation>();
357 if (it->second) 357 if (it->second.get())
358 return it->second; 358 return it->second;
359 359
360 // Take this opportunity to remove all the NULL IconAnimations from 360 // Take this opportunity to remove all the NULL IconAnimations from
361 // icon_animation_. 361 // icon_animation_.
362 icon_animation_.erase(it); 362 icon_animation_.erase(it);
363 for (it = icon_animation_.begin(); it != icon_animation_.end();) { 363 for (it = icon_animation_.begin(); it != icon_animation_.end();) {
364 if (it->second) { 364 if (it->second.get()) {
365 ++it; 365 ++it;
366 } else { 366 } else {
367 // The WeakPtr is null; remove it from the map. 367 // The WeakPtr is null; remove it from the map.
368 icon_animation_.erase(it++); 368 icon_animation_.erase(it++);
369 } 369 }
370 } 370 }
371 return base::WeakPtr<ExtensionAction::IconAnimation>(); 371 return base::WeakPtr<ExtensionAction::IconAnimation>();
372 } 372 }
373 373
374 gfx::ImageSkia ExtensionAction::ApplyIconAnimation( 374 gfx::ImageSkia ExtensionAction::ApplyIconAnimation(
375 int tab_id, 375 int tab_id,
376 const gfx::ImageSkia& icon) const { 376 const gfx::ImageSkia& icon) const {
377 base::WeakPtr<IconAnimation> animation = GetIconAnimation(tab_id); 377 base::WeakPtr<IconAnimation> animation = GetIconAnimation(tab_id);
378 if (animation == NULL) 378 if (animation.get() == NULL)
379 return icon; 379 return icon;
380 380
381 return gfx::ImageSkia(new AnimatedIconImageSource(icon, animation), 381 return gfx::ImageSkia(new AnimatedIconImageSource(icon, animation),
382 icon.size()); 382 icon.size());
383 } 383 }
384 384
385 namespace { 385 namespace {
386 // Used to create a Callback owning an IconAnimation. 386 // Used to create a Callback owning an IconAnimation.
387 void DestroyIconAnimation(scoped_ptr<ExtensionAction::IconAnimation>) {} 387 void DestroyIconAnimation(scoped_ptr<ExtensionAction::IconAnimation>) {}
388 } 388 }
389 void ExtensionAction::RunIconAnimation(int tab_id) { 389 void ExtensionAction::RunIconAnimation(int tab_id) {
390 scoped_ptr<IconAnimation> icon_animation(new IconAnimation()); 390 scoped_ptr<IconAnimation> icon_animation(new IconAnimation());
391 icon_animation_[tab_id] = icon_animation->AsWeakPtr(); 391 icon_animation_[tab_id] = icon_animation->AsWeakPtr();
392 icon_animation->Start(); 392 icon_animation->Start();
393 // After the icon is finished fading in (plus some padding to handle random 393 // After the icon is finished fading in (plus some padding to handle random
394 // timer delays), destroy it. We use a delayed task so that the Animation is 394 // timer delays), destroy it. We use a delayed task so that the Animation is
395 // deleted even if it hasn't finished by the time the MessageLoop is 395 // deleted even if it hasn't finished by the time the MessageLoop is
396 // destroyed. 396 // destroyed.
397 base::MessageLoop::current()->PostDelayedTask( 397 base::MessageLoop::current()->PostDelayedTask(
398 FROM_HERE, 398 FROM_HERE,
399 base::Bind(&DestroyIconAnimation, base::Passed(&icon_animation)), 399 base::Bind(&DestroyIconAnimation, base::Passed(&icon_animation)),
400 base::TimeDelta::FromMilliseconds(kIconFadeInDurationMs * 2)); 400 base::TimeDelta::FromMilliseconds(kIconFadeInDurationMs * 2));
401 } 401 }
OLDNEW
« no previous file with comments | « chrome/browser/extensions/crx_installer.cc ('k') | chrome/browser/extensions/extension_disabled_ui.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698