Home | History | Annotate | Download | only in browser
      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
      3 // found in the LICENSE file.
      4 
      5 #ifndef CONTENT_PUBLIC_BROWSER_DOWNLOAD_DESTINATION_OBSERVER_H_
      6 #define CONTENT_PUBLIC_BROWSER_DOWNLOAD_DESTINATION_OBSERVER_H_
      7 
      8 #include <string>
      9 
     10 #include "content/public/browser/download_interrupt_reasons.h"
     11 
     12 namespace content {
     13 
     14 // Class that receives asynchronous events from a DownloadDestination about
     15 // downloading progress and completion.  These should report status when the
     16 // data arrives at its final location; i.e. DestinationUpdate should be
     17 // called after the destination is finished with whatever operation it
     18 // is doing on the data described by |bytes_so_far| and DestinationCompleted
     19 // should only be called once that is true for all data.
     20 //
     21 // All methods are invoked on the UI thread.
     22 //
     23 // Note that this interface does not deal with cross-thread lifetime issues.
     24 class DownloadDestinationObserver {
     25  public:
     26   virtual void DestinationUpdate(int64 bytes_so_far,
     27                                  int64 bytes_per_sec,
     28                                  const std::string& hash_state) = 0;
     29 
     30   virtual void DestinationError(DownloadInterruptReason reason) = 0;
     31 
     32   virtual void DestinationCompleted(const std::string& final_hash) = 0;
     33 };
     34 
     35 }  // namespace content
     36 
     37 #endif  // CONTENT_PUBLIC_BROWSER_DOWNLOAD_DESTINATION_OBSERVER_H_
     38