Skip to content

Commit

Permalink
Expose functionality to tests.
Browse files Browse the repository at this point in the history
Second try of https://chromiumcodereview.appspot.com/10815083
BUG=None
TEST=None
TBR=satorux

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

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@148382 0039d316-1c4b-4281-b951-d872f2087c98
  • Loading branch information
davemoore@chromium.org committed Jul 25, 2012
1 parent 18cbf3c commit 73c7151
Show file tree
Hide file tree
Showing 3 changed files with 22 additions and 14 deletions.
24 changes: 15 additions & 9 deletions dbus/message.cc
Original file line number Diff line number Diff line change
Expand Up @@ -18,19 +18,19 @@ namespace {

// Appends the header name and the value to |output|, if the value is
// not empty.
static void AppendStringHeader(const std::string& header_name,
const std::string& header_value,
std::string* output) {
void AppendStringHeader(const std::string& header_name,
const std::string& header_value,
std::string* output) {
if (!header_value.empty()) {
*output += header_name + ": " + header_value + "\n";
}
}

// Appends the header name and the value to |output|, if the value is
// nonzero.
static void AppendUint32Header(const std::string& header_name,
uint32 header_value,
std::string* output) {
void AppendUint32Header(const std::string& header_name,
uint32 header_value,
std::string* output) {
if (header_value != 0) {
*output += (header_name + ": " + base::StringPrintf("%u", header_value) +
"\n");
Expand All @@ -41,6 +41,12 @@ static void AppendUint32Header(const std::string& header_name,

namespace dbus {

bool IsDBusTypeUnixFdSupported() {
int major = 0, minor = 0, micro = 0;
dbus_get_version(&major, &minor, &micro);
return major >= 1 && minor >= 4;
}

Message::Message()
: raw_message_(NULL) {
}
Expand Down Expand Up @@ -211,7 +217,7 @@ std::string Message::ToStringInternal(const std::string& indent,
break;
}
case UNIX_FD: {
CHECK(kDBusTypeUnixFdIsSupported);
CHECK(IsDBusTypeUnixFdSupported());

FileDescriptor file_descriptor;
if (!reader->PopFileDescriptor(&file_descriptor))
Expand Down Expand Up @@ -690,7 +696,7 @@ void MessageWriter::AppendVariantOfBasic(int dbus_type, const void* value) {
}

void MessageWriter::AppendFileDescriptor(const FileDescriptor& value) {
CHECK(kDBusTypeUnixFdIsSupported);
CHECK(IsDBusTypeUnixFdSupported());

if (!value.is_valid()) {
// NB: sending a directory potentially enables sandbox escape
Expand Down Expand Up @@ -960,7 +966,7 @@ bool MessageReader::PopVariantOfBasic(int dbus_type, void* value) {
}

bool MessageReader::PopFileDescriptor(FileDescriptor* value) {
CHECK(kDBusTypeUnixFdIsSupported);
CHECK(IsDBusTypeUnixFdSupported());

int fd = -1;
const bool success = PopBasic(DBUS_TYPE_UNIX_FD, &fd);
Expand Down
10 changes: 6 additions & 4 deletions dbus/message.h
Original file line number Diff line number Diff line change
Expand Up @@ -28,13 +28,15 @@ class MessageWriter;
class MessageReader;

// DBUS_TYPE_UNIX_FD was added in D-Bus version 1.4
#if defined(DBUS_TYPE_UNIX_FD)
const bool kDBusTypeUnixFdIsSupported = true;
#else
const bool kDBusTypeUnixFdIsSupported = false;
#if !defined(DBUS_TYPE_UNIX_FD)
#define DBUS_TYPE_UNIX_FD ((int) 'h')
#endif

// Returns true if Unix FD passing is supported in libdbus.
// The check is done runtime rather than compile time as the libdbus
// version used at runtime may be different from the one used at compile time.
bool IsDBusTypeUnixFdSupported();

// Message is the base class of D-Bus message types. Client code must use
// sub classes such as MethodCall and Response instead.
//
Expand Down
2 changes: 1 addition & 1 deletion dbus/message_unittest.cc
Original file line number Diff line number Diff line change
Expand Up @@ -97,7 +97,7 @@ TEST(MessageTest, AppendAndPopBasicDataTypes) {

// Check all basic types can be properly written and read.
TEST(MessageTest, AppendAndPopFileDescriptor) {
if (!dbus::kDBusTypeUnixFdIsSupported) {
if (!dbus::IsDBusTypeUnixFdSupported()) {
LOG(WARNING) << "FD passing is not supported";
return;
}
Expand Down

0 comments on commit 73c7151

Please sign in to comment.