From f2a33ff9cbc6d19943f1c7fbddd1f23d23975577 Mon Sep 17 00:00:00 2001 From: Andras Becsi Date: Wed, 11 Dec 2013 21:33:03 +0100 Subject: Update Chromium to branch 1650 (31.0.1650.63) Change-Id: I57d8c832eaec1eb2364e0a8e7352a6dd354db99f Reviewed-by: Jocelyn Turcotte --- chromium/ppapi/shared_impl/unittest_utils.cc | 38 ++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) (limited to 'chromium/ppapi/shared_impl/unittest_utils.cc') diff --git a/chromium/ppapi/shared_impl/unittest_utils.cc b/chromium/ppapi/shared_impl/unittest_utils.cc index f5d064b4db6..6974bd20b3f 100644 --- a/chromium/ppapi/shared_impl/unittest_utils.cc +++ b/chromium/ppapi/shared_impl/unittest_utils.cc @@ -8,8 +8,10 @@ #include "base/containers/hash_tables.h" #include "base/logging.h" +#include "ipc/ipc_message.h" #include "ppapi/shared_impl/array_var.h" #include "ppapi/shared_impl/dictionary_var.h" +#include "ppapi/shared_impl/resource_var.h" #include "ppapi/shared_impl/var.h" #include "ppapi/shared_impl/var_tracker.h" @@ -151,6 +153,42 @@ bool Equals(const PP_Var& expected, } return true; } + case PP_VARTYPE_RESOURCE: { + ResourceVar* expected_var = ResourceVar::FromPPVar(expected); + ResourceVar* actual_var = ResourceVar::FromPPVar(actual); + DCHECK(expected_var && actual_var); + if (expected_var->GetPPResource() != actual_var->GetPPResource()) { + LOG(ERROR) << "expected: " << expected_var->GetPPResource() + << " actual: " << actual_var->GetPPResource(); + return false; + } + + const IPC::Message* actual_message = actual_var->GetCreationMessage(); + const IPC::Message* expected_message = + expected_var->GetCreationMessage(); + if (expected_message->size() != actual_message->size()) { + LOG(ERROR) << "expected creation message size: " + << expected_message->size() << " actual: " + << actual_message->size(); + return false; + } + + // Set the upper 24 bits of actual creation_message flags to the same as + // expected. This is an unpredictable reference number that changes + // between serialization/deserialization, and we do not want it to cause + // the comparison to fail. + IPC::Message local_actual_message(*actual_message); + local_actual_message.SetHeaderValues( + actual_message->routing_id(), actual_message->type(), + (expected_message->flags() & 0xffffff00) | + (actual_message->flags() & 0xff)); + if (memcmp(expected_message->data(), local_actual_message.data(), + expected_message->size()) != 0) { + LOG(ERROR) << "expected creation message does not match actual."; + return false; + } + return true; + } } NOTREACHED(); return false; -- cgit v1.2.1