Add an ostream operator to Value (based on JSONWriter) so that assertions
involving Value::Equals are much easier to understand. For example,

ListValue list;
DictionaryValue dict;
ASSERT_TRUE(Value::Equals(&list, &dict)) << list << "does not equal\n" << dict;

will now print

Value of: Value::Equals(&list, &dict)
  Actual: false
Expected: true
[  ]
does not equal
{

}


Review URL: https://chromiumcodereview.appspot.com/10915194

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@156226 0039d316-1c4b-4281-b951-d872f2087c98


CrOS-Libchrome-Original-Commit: e4ef831a8f0bee7e9d484e837fcb1f8c6ea3e3af
diff --git a/base/values.h b/base/values.h
index 83d046c..02a3566 100644
--- a/base/values.h
+++ b/base/values.h
@@ -505,6 +505,9 @@
   virtual Value* Deserialize(int* error_code, std::string* error_str) = 0;
 };
 
+// Stream operator so Values can be used in assertion statements.
+BASE_EXPORT std::ostream& operator<<(std::ostream& out, const Value& value);
+
 }  // namespace base
 
 // http://crbug.com/88666