// Copyright (c) 2011 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 WEBKIT_APPCACHE_APPCACHE_POLICY_H_
#define WEBKIT_APPCACHE_APPCACHE_POLICY_H_

class GURL;

namespace appcache {

class AppCachePolicy {
 public:
  AppCachePolicy() {}

  // Called prior to loading a main resource from the appache.
  // Returns true if allowed. This is expected to return immediately
  // without any user prompt.
  virtual bool CanLoadAppCache(const GURL& manifest_url,
                               const GURL& first_party) = 0;

  // Called prior to creating a new appcache. Returns true if allowed.
  virtual bool CanCreateAppCache(const GURL& manifest_url,
                                 const GURL& first_party) = 0;

 protected:
  ~AppCachePolicy() {}
};

}  // namespace appcache

#endif  // WEBKIT_APPCACHE_APPCACHE_POLICY_H_
