15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2011 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)
590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#ifndef CHROME_BROWSER_UI_WEBUI_QUOTA_INTERNALS_QUOTA_INTERNALS_TYPES_H_
690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#define CHROME_BROWSER_UI_WEBUI_QUOTA_INTERNALS_QUOTA_INTERNALS_TYPES_H_
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <map>
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <string>
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
11eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "base/time/time.h"
127dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#include "url/gurl.h"
13868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "webkit/common/quota/quota_types.h"
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace base {
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class Value;
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace quota_internals {
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Represends global usage and quota information for specific type of storage.
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class GlobalStorageInfo {
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public:
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  explicit GlobalStorageInfo(quota::StorageType type);
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ~GlobalStorageInfo();
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void set_usage(int64 usage) {
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    usage_ = usage;
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void set_unlimited_usage(int64 unlimited_usage) {
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    unlimited_usage_ = unlimited_usage;
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void set_quota(int64 quota) {
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    quota_ = quota;
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Create new Value for passing to WebUI page.  Caller is responsible for
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // deleting the returned pointer.
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  base::Value* NewValue() const;
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private:
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  quota::StorageType type_;
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  int64 usage_;
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  int64 unlimited_usage_;
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  int64 quota_;
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Represents per host usage and quota information for the storage.
515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class PerHostStorageInfo {
525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public:
535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PerHostStorageInfo(const std::string& host, quota::StorageType type);
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ~PerHostStorageInfo();
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void set_usage(int64 usage) {
575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    usage_ = usage;
585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void set_quota(int64 quota) {
615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    quota_ = quota;
625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Create new Value for passing to WebUI page.  Caller is responsible for
655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // deleting the returned pointer.
665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  base::Value* NewValue() const;
675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private:
685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  std::string host_;
695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  quota::StorageType type_;
705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  int64 usage_;
725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  int64 quota_;
735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Represendts per origin usage and access time information.
765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class PerOriginStorageInfo {
775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public:
785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PerOriginStorageInfo(const GURL& origin, quota::StorageType type);
795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ~PerOriginStorageInfo();
805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void set_in_use(bool in_use) {
825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    in_use_ = in_use ? 1 : 0;
835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void set_used_count(int used_count) {
865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    used_count_ = used_count;
875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void set_last_access_time(base::Time last_access_time) {
905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    last_access_time_ = last_access_time;
915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void set_last_modified_time(base::Time last_modified_time) {
945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    last_modified_time_ = last_modified_time;
955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Create new Value for passing to WebUI page.  Caller is responsible for
985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // deleting the returned pointer.
995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  base::Value* NewValue() const;
1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private:
1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  GURL origin_;
1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  quota::StorageType type_;
1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  std::string host_;
1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  int in_use_;
1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  int used_count_;
1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  base::Time last_access_time_;
1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  base::Time last_modified_time_;
1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // quota_internals
1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
11290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#endif  // CHROME_BROWSER_UI_WEBUI_QUOTA_INTERNALS_QUOTA_INTERNALS_TYPES_H_
113