| Index: chrome/browser/image_loading_tracker.h
 | 
| ===================================================================
 | 
| --- chrome/browser/image_loading_tracker.h	(revision 28272)
 | 
| +++ chrome/browser/image_loading_tracker.h	(working copy)
 | 
| @@ -1,72 +0,0 @@
 | 
| -// Copyright (c) 2009 The Chromium Authors. All rights reserved.
 | 
| -// Use of this source code is governed by a BSD-style license that can be
 | 
| -// found in the LICENSE file.
 | 
| -
 | 
| -#ifndef CHROME_BROWSER_IMAGE_LOADING_TRACKER_H_
 | 
| -#define CHROME_BROWSER_IMAGE_LOADING_TRACKER_H_
 | 
| -
 | 
| -#include "base/ref_counted.h"
 | 
| -
 | 
| -class FilePath;
 | 
| -class SkBitmap;
 | 
| -
 | 
| -// The views need to load their icons asynchronously but might be deleted before
 | 
| -// the images have loaded. This class stays alive while the request is in
 | 
| -// progress (manages its own lifetime) and keeps track of whether the view still
 | 
| -// cares about the icon loading.
 | 
| -class ImageLoadingTracker
 | 
| -  : public base::RefCountedThreadSafe<ImageLoadingTracker> {
 | 
| - public:
 | 
| -  class Observer {
 | 
| -   public:
 | 
| -    // Will be called when the image with the given index has loaded.
 | 
| -    // The |image| is owned by the tracker, so the observer should make a copy
 | 
| -    // if they need to access it after this call.
 | 
| -    virtual void OnImageLoaded(SkBitmap* image, size_t index) = 0;
 | 
| -  };
 | 
| -
 | 
| -  ImageLoadingTracker(Observer* observer, size_t image_count)
 | 
| -    : observer_(observer), image_count_(image_count), posted_count_(0) {
 | 
| -    AddRef();  // We hold on to a reference to ourself to make sure we don't
 | 
| -               // get deleted until we get a response from image loading (see
 | 
| -               // ImageLoadingDone).
 | 
| -  }
 | 
| -  ~ImageLoadingTracker() {}
 | 
| -
 | 
| -  // If there are remaining images to be loaded, the observing object should
 | 
| -  // call this method on its destruction, so that the tracker will not attempt
 | 
| -  // to make any more callbacks to it.
 | 
| -  void StopTrackingImageLoad() {
 | 
| -    observer_ = NULL;
 | 
| -  }
 | 
| -
 | 
| -  // Specify path of image to load.  This method must be called a number of
 | 
| -  // times equal to the |image_count| arugment to the constructor.  Calling it
 | 
| -  // any more or less than that is an error.
 | 
| -  void PostLoadImageTask(FilePath path);
 | 
| -
 | 
| - private:
 | 
| -  class LoadImageTask;
 | 
| -
 | 
| -  // When an image has finished loaded and scaled on the file thread, it is
 | 
| -  // posted back to this method on the original thread.  This method then calls
 | 
| -  // the observer's OnImageLoaded and deletes the ImageLoadingTracker if it was
 | 
| -  // the last image in the list.
 | 
| -  // |image| may be null if the file failed to decode.
 | 
| -  void OnImageLoaded(SkBitmap* image, size_t index);
 | 
| -
 | 
| -  // The view that is waiting for the image to load.
 | 
| -  Observer* observer_;
 | 
| -
 | 
| -  // The number of images this ImageTracker should keep track of.  This is
 | 
| -  // decremented as each image finishes loading, and the tracker will delete
 | 
| -  // itself when it reaches zero.
 | 
| -  size_t image_count_;
 | 
| -
 | 
| -  // The number of tasks that have been posted so far.
 | 
| -  size_t posted_count_;
 | 
| -
 | 
| -  DISALLOW_COPY_AND_ASSIGN(ImageLoadingTracker);
 | 
| -};
 | 
| -
 | 
| -#endif  // CHROME_BROWSER_IMAGE_LOADING_TRACKER_H_
 | 
| 
 |