Upstream version 7.36.149.0
[platform/framework/web/crosswalk.git] / src / components / dom_distiller / core / task_tracker.h
index dc066be..a6df540 100644 (file)
@@ -21,6 +21,7 @@ class GURL;
 namespace dom_distiller {
 
 class DistilledArticleProto;
+class DistilledContentStore;
 
 // A handle to a request to view a DOM distiller entry or URL. The request will
 // be cancelled when the handle is destroyed.
@@ -75,11 +76,14 @@ class TaskTracker {
       void(const ArticleEntry&, const DistilledArticleProto*, bool)>
       SaveCallback;
 
-  TaskTracker(const ArticleEntry& entry, CancelCallback callback);
+  TaskTracker(const ArticleEntry& entry,
+              CancelCallback callback,
+              DistilledContentStore* content_store);
   ~TaskTracker();
 
   // |factory| will not be stored after this call.
-  void StartDistiller(DistillerFactory* factory);
+  void StartDistiller(DistillerFactory* factory,
+                      scoped_ptr<DistillerPage> distiller_page);
   void StartBlobFetcher();
 
   void AddSaveCallback(const SaveCallback& callback);
@@ -94,33 +98,47 @@ class TaskTracker {
   bool HasUrl(const GURL& url) const;
 
  private:
+  void OnArticleDistillationUpdated(
+      const ArticleDistillationUpdate& article_update);
+
   void OnDistillerFinished(scoped_ptr<DistilledArticleProto> distilled_article);
+  void OnBlobFetched(bool success,
+                     scoped_ptr<DistilledArticleProto> distilled_article);
+
+  void RemoveViewer(ViewRequestDelegate* delegate);
 
-  void OnDistilledArticleReady(
+  void DistilledArticleReady(
       scoped_ptr<DistilledArticleProto> distilled_article);
-  void OnArticleDistillationUpdated(
-      const ArticleDistillationUpdate& article_update);
+
   // Posts a task to run DoSaveCallbacks with |distillation_succeeded|.
   void ScheduleSaveCallbacks(bool distillation_succeeded);
 
-  // Runs all callbacks passing |distillation_succeeded| and clears them. Should
-  // be called through ScheduleSaveCallbacks.
+  // Runs all callbacks passing |distillation_succeeded| and clears them.
   void DoSaveCallbacks(bool distillation_succeeded);
 
-  void RemoveViewer(ViewRequestDelegate* delegate);
+  void AddDistilledContentToStore(const DistilledArticleProto& content);
+
+  void NotifyViewersAndCallbacks();
   void NotifyViewer(ViewRequestDelegate* delegate);
 
+  bool IsAnySourceRunning() const;
+  void ContentSourceFinished();
+
+  void CancelPendingSources();
   void MaybeCancel();
 
   CancelCallback cancel_callback_;
-  std::vector<SaveCallback> save_callbacks_;
 
-  scoped_ptr<Distiller> distiller_;
+  DistilledContentStore* content_store_;
 
+  std::vector<SaveCallback> save_callbacks_;
   // A ViewRequestDelegate will be added to this list when a view request is
   // made and removed when the corresponding ViewerHandle is destroyed.
   std::vector<ViewRequestDelegate*> viewers_;
 
+  scoped_ptr<Distiller> distiller_;
+  bool blob_fetcher_running_;
+
   ArticleEntry entry_;
   scoped_ptr<DistilledArticleProto> distilled_article_;