15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 51320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#ifndef STORAGE_BROWSER_FILEAPI_FILE_SYSTEM_QUOTA_UTIL_H_ 61320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#define STORAGE_BROWSER_FILEAPI_FILE_SYSTEM_QUOTA_UTIL_H_ 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <set> 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <string> 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/basictypes.h" 125d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "base/files/file.h" 131320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "storage/browser/storage_browser_export.h" 141320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "storage/common/fileapi/file_system_types.h" 15eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "url/gurl.h" 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace base { 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class SequencedTaskRunner; 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2103b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)namespace storage { 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class QuotaManagerProxy; 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2503b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)namespace storage { 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class FileSystemContext; 28f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)class QuotaReservation; 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// An abstract interface that provides common quota-related utility functions 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// for file_system_quota_client. 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// All the methods of this class are synchronous and need to be called on 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// the thread that the method name implies. 341320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciclass STORAGE_EXPORT FileSystemQuotaUtil { 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual ~FileSystemQuotaUtil() {} 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 387d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) // Deletes the data on the origin and reports the amount of deleted data 397d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) // to the quota manager via |proxy|. 405d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) virtual base::File::Error DeleteOriginDataOnFileTaskRunner( 417d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) FileSystemContext* context, 4203b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) storage::QuotaManagerProxy* proxy, 437d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) const GURL& origin_url, 447d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) FileSystemType type) = 0; 457d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 4603b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) virtual void GetOriginsForTypeOnFileTaskRunner(storage::FileSystemType type, 4703b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) std::set<GURL>* origins) = 0; 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4903b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) virtual void GetOriginsForHostOnFileTaskRunner(storage::FileSystemType type, 5003b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) const std::string& host, 5103b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) std::set<GURL>* origins) = 0; 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Returns the amount of data used for the origin for usage tracking. 545d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) virtual int64 GetOriginUsageOnFileTaskRunner( 5503b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) storage::FileSystemContext* file_system_context, 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const GURL& origin_url, 5703b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) storage::FileSystemType type) = 0; 585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 59f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // Creates new reservation object for the origin and the type. 60f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) virtual scoped_refptr<QuotaReservation> 61f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) CreateQuotaReservationOnFileTaskRunner( 62f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) const GURL& origin_url, 63f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) FileSystemType type) = 0; 645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6603b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)} // namespace storage 675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 681320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#endif // STORAGE_BROWSER_FILEAPI_FILE_SYSTEM_QUOTA_UTIL_H_ 69