Index: base/values.cc |
diff --git a/base/values.cc b/base/values.cc |
index 35225698c54d56eb83be645256a80b04dabb0341..ddce121d5bc94c5e993f126a872ceae1c15a484d 100644 |
--- a/base/values.cc |
+++ b/base/values.cc |
@@ -1,4 +1,4 @@ |
-// Copyright (c) 2010 The Chromium Authors. All rights reserved. |
+// 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. |
@@ -119,6 +119,10 @@ bool Value::GetAsString(string16* out_value) const { |
return false; |
} |
+bool Value::GetAsFilePath(FilePath* out_value) const { |
+ return false; |
+} |
+ |
bool Value::GetAsList(ListValue** out_value) { |
return false; |
} |
@@ -261,6 +265,29 @@ bool StringValue::Equals(const Value* other) const { |
return GetAsString(&lhs) && other->GetAsString(&rhs) && lhs == rhs; |
} |
+///////////////////// FilePathValue //////////////////////////////////////////// |
+ |
+FilePathValue::FilePathValue(const FilePath& in_value) |
+ : Value(TYPE_PATH), |
+ value_(in_value) { |
+} |
+ |
+FilePathValue::~FilePathValue() { |
+} |
+ |
+bool FilePathValue::GetAsFilePath(FilePath* out_value) const { |
+ if (out_value) |
+ *out_value = value_; |
+ return true; |
+} |
+ |
+bool FilePathValue::Equals(const Value* other) const { |
+ if (other->GetType() != GetType()) |
+ return false; |
+ FilePath lhs, rhs; |
+ return GetAsFilePath(&lhs) && other->GetAsFilePath(&rhs) && lhs == rhs; |
+} |
+ |
///////////////////// BinaryValue //////////////////// |
BinaryValue::~BinaryValue() { |
@@ -511,6 +538,15 @@ bool DictionaryValue::GetList(const std::string& path, |
return true; |
} |
+bool DictionaryValue::GetFilePath(const std::string& path, |
+ FilePath* out_value) const { |
+ Value* value; |
+ if (!Get(path, &value)) |
+ return false; |
+ |
+ return value->GetAsFilePath(out_value); |
+} |
+ |
bool DictionaryValue::GetWithoutPathExpansion(const std::string& key, |
Value** out_value) const { |
DCHECK(IsStringUTF8(key)); |
@@ -802,6 +838,14 @@ bool ListValue::GetList(size_t index, ListValue** out_value) const { |
return true; |
} |
+bool ListValue::GetFilePath(size_t index, FilePath* out_value) const { |
+ Value* value; |
+ if (!Get(index, &value)) |
+ return false; |
+ |
+ return value->GetAsFilePath(out_value); |
+} |
+ |
bool ListValue::Remove(size_t index, Value** out_value) { |
if (index >= list_.size()) |
return false; |