blob: af2f082e46482e07657b7edcb7e2d63e846ef350 [file] [log] [blame]
// Copyright (c) 2012 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.
#include "content/renderer/pepper/pepper_broker.h"
#if defined(OS_POSIX)
#include <fcntl.h>
#include <sys/socket.h>
#endif // defined(OS_POSIX)
#include "base/test/scoped_task_environment.h"
#include "build/build_config.h"
#include "content/test/mock_render_process.h"
#include "testing/gtest/include/gtest/gtest.h"
namespace content {
class PepperBrokerTest : public ::testing::Test {
protected:
PepperBrokerTest()
: task_environment_(
base::test::ScopedTaskEnvironment::MainThreadType::IO) {}
base::test::ScopedTaskEnvironment task_environment_;
// We need a render process for ppapi::proxy::ProxyChannel to work.
MockRenderProcess mock_process_;
};
// Try to initialize PepperBrokerDispatcherWrapper with invalid ChannelHandle.
// Initialization should fail.
TEST_F(PepperBrokerTest, InitFailure) {
PepperBrokerDispatcherWrapper dispatcher_wrapper;
IPC::ChannelHandle invalid_channel; // Invalid by default.
// An invalid handle should result in a failure (false) without a LOG(FATAL),
// such as the one in CreatePipe(). Call it twice because without the invalid
// handle check, the posix code would hit a one-time path due to a static
// variable and go through the LOG(FATAL) path.
EXPECT_FALSE(dispatcher_wrapper.Init(base::kNullProcessId, invalid_channel));
EXPECT_FALSE(dispatcher_wrapper.Init(base::kNullProcessId, invalid_channel));
}
// On valid ChannelHandle, initialization should succeed.
TEST_F(PepperBrokerTest, InitSuccess) {
PepperBrokerDispatcherWrapper dispatcher_wrapper;
mojo::MessagePipe pipe;
IPC::ChannelHandle valid_channel(pipe.handle0.release());
EXPECT_TRUE(dispatcher_wrapper.Init(base::kNullProcessId, valid_channel));
}
} // namespace content