Home | History | Annotate | Download | only in appcache
      1 // Copyright 2013 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_CHILD_APPCACHE_WEB_APPLICATION_CACHE_HOST_IMPL_H_
      6 #define CONTENT_CHILD_APPCACHE_WEB_APPLICATION_CACHE_HOST_IMPL_H_
      7 
      8 #include <string>
      9 
     10 #include "third_party/WebKit/public/platform/WebURLResponse.h"
     11 #include "third_party/WebKit/public/platform/WebVector.h"
     12 #include "third_party/WebKit/public/web/WebApplicationCacheHostClient.h"
     13 #include "url/gurl.h"
     14 #include "webkit/common/appcache/appcache_interfaces.h"
     15 
     16 namespace WebKit {
     17 class WebFrame;
     18 }
     19 
     20 namespace content {
     21 
     22 class WebApplicationCacheHostImpl
     23     : NON_EXPORTED_BASE(public WebKit::WebApplicationCacheHost) {
     24  public:
     25   // Returns the host having given id or NULL if there is no such host.
     26   static WebApplicationCacheHostImpl* FromId(int id);
     27 
     28   // Returns the host associated with the current document in frame.
     29   static WebApplicationCacheHostImpl* FromFrame(const WebKit::WebFrame* frame);
     30 
     31   WebApplicationCacheHostImpl(WebKit::WebApplicationCacheHostClient* client,
     32                               appcache::AppCacheBackend* backend);
     33   virtual ~WebApplicationCacheHostImpl();
     34 
     35   int host_id() const { return host_id_; }
     36   appcache::AppCacheBackend* backend() const { return backend_; }
     37   WebKit::WebApplicationCacheHostClient* client() const { return client_; }
     38 
     39   virtual void OnCacheSelected(const appcache::AppCacheInfo& info);
     40   void OnStatusChanged(appcache::Status);
     41   void OnEventRaised(appcache::EventID);
     42   void OnProgressEventRaised(const GURL& url, int num_total, int num_complete);
     43   void OnErrorEventRaised(const std::string& message);
     44   virtual void OnLogMessage(appcache::LogLevel log_level,
     45                             const std::string& message) {}
     46   virtual void OnContentBlocked(const GURL& manifest_url) {}
     47 
     48   // WebKit::WebApplicationCacheHost:
     49   virtual void willStartMainResourceRequest(WebKit::WebURLRequest&,
     50                                             const WebKit::WebFrame*);
     51   virtual void willStartSubResourceRequest(WebKit::WebURLRequest&);
     52   virtual void selectCacheWithoutManifest();
     53   virtual bool selectCacheWithManifest(const WebKit::WebURL& manifestURL);
     54   virtual void didReceiveResponseForMainResource(const WebKit::WebURLResponse&);
     55   virtual void didReceiveDataForMainResource(const char* data, int len);
     56   virtual void didFinishLoadingMainResource(bool success);
     57   virtual WebKit::WebApplicationCacheHost::Status status();
     58   virtual bool startUpdate();
     59   virtual bool swapCache();
     60   virtual void getResourceList(WebKit::WebVector<ResourceInfo>* resources);
     61   virtual void getAssociatedCacheInfo(CacheInfo* info);
     62 
     63  private:
     64   enum IsNewMasterEntry {
     65     MAYBE,
     66     YES,
     67     NO
     68   };
     69 
     70   WebKit::WebApplicationCacheHostClient* client_;
     71   appcache::AppCacheBackend* backend_;
     72   int host_id_;
     73   appcache::Status status_;
     74   WebKit::WebURLResponse document_response_;
     75   GURL document_url_;
     76   bool is_scheme_supported_;
     77   bool is_get_method_;
     78   IsNewMasterEntry is_new_master_entry_;
     79   appcache::AppCacheInfo cache_info_;
     80   GURL original_main_resource_url_;  // Used to detect redirection.
     81   bool was_select_cache_called_;
     82 };
     83 
     84 }  // namespace content
     85 
     86 #endif  // CONTENT_CHILD_APPCACHE_WEB_APPLICATION_CACHE_HOST_IMPL_H_
     87