Home | History | Annotate | Download | only in quota_internals
      1 // Copyright (c) 2011 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 #include "chrome/browser/ui/webui/quota_internals/quota_internals_types.h"
      6 
      7 #include "base/logging.h"
      8 #include "base/memory/scoped_ptr.h"
      9 #include "base/values.h"
     10 #include "net/base/net_util.h"
     11 
     12 namespace {
     13 
     14 std::string StorageTypeToString(storage::StorageType type) {
     15   switch (type) {
     16     case storage::kStorageTypeTemporary:
     17       return "temporary";
     18     case storage::kStorageTypePersistent:
     19       return "persistent";
     20     case storage::kStorageTypeSyncable:
     21       return "syncable";
     22     case storage::kStorageTypeQuotaNotManaged:
     23       return "quota not managed";
     24     case storage::kStorageTypeUnknown:
     25       return "unknown";
     26   }
     27   return "unknown";
     28 }
     29 
     30 }  // anonymous namespace
     31 
     32 namespace quota_internals {
     33 
     34 GlobalStorageInfo::GlobalStorageInfo(storage::StorageType type)
     35     : type_(type), usage_(-1), unlimited_usage_(-1), quota_(-1) {
     36 }
     37 
     38 GlobalStorageInfo::~GlobalStorageInfo() {}
     39 
     40 base::Value* GlobalStorageInfo::NewValue() const {
     41   // TODO(tzik): Add CreateLongIntegerValue to base/values.h and remove
     42   // all static_cast<double> in this file.
     43   base::DictionaryValue* dict = new base::DictionaryValue;
     44   dict->SetString("type", StorageTypeToString(type_));
     45   if (usage_ >= 0)
     46     dict->SetDouble("usage", static_cast<double>(usage_));
     47   if (unlimited_usage_ >= 0)
     48     dict->SetDouble("unlimitedUsage", static_cast<double>(unlimited_usage_));
     49   if (quota_ >= 0)
     50     dict->SetDouble("quota", static_cast<double>(quota_));
     51   return dict;
     52 }
     53 
     54 PerHostStorageInfo::PerHostStorageInfo(const std::string& host,
     55                                        storage::StorageType type)
     56     : host_(host), type_(type), usage_(-1), quota_(-1) {
     57 }
     58 
     59 PerHostStorageInfo::~PerHostStorageInfo() {}
     60 
     61 base::Value* PerHostStorageInfo::NewValue() const {
     62   base::DictionaryValue* dict = new base::DictionaryValue;
     63   DCHECK(!host_.empty());
     64   dict->SetString("host", host_);
     65   dict->SetString("type", StorageTypeToString(type_));
     66   if (usage_ >= 0)
     67     dict->SetDouble("usage", static_cast<double>(usage_));
     68   if (quota_ >= 0)
     69     dict->SetDouble("quota", static_cast<double>(quota_));
     70   return dict;
     71 }
     72 
     73 PerOriginStorageInfo::PerOriginStorageInfo(const GURL& origin,
     74                                            storage::StorageType type)
     75     : origin_(origin),
     76       type_(type),
     77       host_(net::GetHostOrSpecFromURL(origin)),
     78       in_use_(-1),
     79       used_count_(-1) {
     80 }
     81 
     82 PerOriginStorageInfo::~PerOriginStorageInfo() {}
     83 
     84 base::Value* PerOriginStorageInfo::NewValue() const {
     85   base::DictionaryValue* dict = new base::DictionaryValue;
     86   DCHECK(!origin_.is_empty());
     87   DCHECK(!host_.empty());
     88   dict->SetString("origin", origin_.spec());
     89   dict->SetString("type", StorageTypeToString(type_));
     90   dict->SetString("host", host_);
     91   if (in_use_ >= 0)
     92     dict->SetBoolean("inUse", (in_use_ > 0));
     93   if (used_count_ >= 0)
     94     dict->SetInteger("usedCount", used_count_);
     95   if (!last_access_time_.is_null())
     96     dict->SetDouble("lastAccessTime", last_access_time_.ToDoubleT() * 1000.0);
     97   if (!last_modified_time_.is_null()) {
     98     dict->SetDouble("lastModifiedTime",
     99                     last_modified_time_.ToDoubleT() * 1000.0);
    100   }
    101   return dict;
    102 }
    103 
    104 }  // namespace quota_internals
    105