diff options
author | rsesek@chromium.org <rsesek@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-04-12 21:48:57 +0000 |
---|---|---|
committer | rsesek@chromium.org <rsesek@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-04-12 21:48:57 +0000 |
commit | 0f8de3cecf676d9c052560a1129c13eb08f7cee1 (patch) | |
tree | 71daaf0ce38780d084492233d605861c1feff503 | |
parent | 60028964db515686c70fe6b169950c3e8c3449c8 (diff) | |
download | chromium_src-0f8de3cecf676d9c052560a1129c13eb08f7cee1.zip chromium_src-0f8de3cecf676d9c052560a1129c13eb08f7cee1.tar.gz chromium_src-0f8de3cecf676d9c052560a1129c13eb08f7cee1.tar.bz2 |
Remove base/mach_ipc_mac.{h,mm}.
The only bit that was still being used was GetNumberOfMachPorts(). Move the
impl of that into its one caller.
BUG=none
Review URL: https://chromiumcodereview.appspot.com/14137013
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@194022 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r-- | base/base.gypi | 2 | ||||
-rw-r--r-- | base/mach_ipc_mac.h | 328 | ||||
-rw-r--r-- | base/mach_ipc_mac.mm | 358 | ||||
-rw-r--r-- | chrome/browser/automation/testing_automation_provider.cc | 27 | ||||
-rw-r--r-- | content/app/content_main_runner.cc | 1 | ||||
-rw-r--r-- | content/browser/mach_broker_mac.mm | 2 |
6 files changed, 26 insertions, 692 deletions
diff --git a/base/base.gypi b/base/base.gypi index 2afc858..f26c4c7 100644 --- a/base/base.gypi +++ b/base/base.gypi @@ -248,8 +248,6 @@ 'mac/scoped_nsexception_enabler.mm', 'mac/scoped_sending_event.h', 'mac/scoped_sending_event.mm', - 'mach_ipc_mac.h', - 'mach_ipc_mac.mm', 'memory/aligned_memory.cc', 'memory/aligned_memory.h', 'memory/discardable_memory.cc', diff --git a/base/mach_ipc_mac.h b/base/mach_ipc_mac.h deleted file mode 100644 index 7f5f7d6..0000000 --- a/base/mach_ipc_mac.h +++ /dev/null @@ -1,328 +0,0 @@ -// 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. - -#ifndef BASE_MACH_IPC_MAC_H_ -#define BASE_MACH_IPC_MAC_H_ - -#include <mach/mach.h> -#include <mach/message.h> -#include <servers/bootstrap.h> -#include <sys/types.h> - -#include <CoreServices/CoreServices.h> - -#include "base/base_export.h" -#include "base/basictypes.h" - -//============================================================================== -// DISCUSSION: -// -// The three main classes of interest are -// -// MachMessage: a wrapper for a Mach message of the following form -// mach_msg_header_t -// mach_msg_body_t -// optional descriptors -// optional extra message data -// -// MachReceiveMessage and MachSendMessage subclass MachMessage -// and are used instead of MachMessage which is an abstract base class -// -// ReceivePort: -// Represents a Mach port for which we have receive rights -// -// MachPortSender: -// Represents a Mach port for which we have send rights -// -// Here's an example to receive a message on a server port: -// -// // This creates our named server port -// ReceivePort receivePort("com.Google.MyService"); -// -// MachReceiveMessage message; -// kern_return_t result = receivePort.WaitForMessage(&message, 0); -// -// if (result == KERN_SUCCESS && message.GetMessageID() == 57) { -// mach_port_t task = message.GetTranslatedPort(0); -// mach_port_t thread = message.GetTranslatedPort(1); -// -// char *messageString = message.GetData(); -// -// printf("message string = %s\n", messageString); -// } -// -// Here is an example of using these classes to send a message to this port: -// -// // send to already named port -// MachPortSender sender("com.Google.MyService"); -// MachSendMessage message(57); // our message ID is 57 -// -// // add some ports to be translated for us -// message.AddDescriptor(mach_task_self()); // our task -// message.AddDescriptor(mach_thread_self()); // this thread -// -// char messageString[] = "Hello server!\n"; -// message.SetData(messageString, strlen(messageString)+1); -// // timeout 1000ms -// kern_return_t result = sender.SendMessage(message, 1000); -// - -#define PRINT_MACH_RESULT(result_, message_) \ - printf(message_" %s (%d)\n", mach_error_string(result_), result_ ); - -namespace base { - -//============================================================================== -// A wrapper class for mach_msg_port_descriptor_t (with same memory layout) -// with convenient constructors and accessors -class MachMsgPortDescriptor : public mach_msg_port_descriptor_t { - public: - // General-purpose constructor - MachMsgPortDescriptor(mach_port_t in_name, - mach_msg_type_name_t in_disposition) { - name = in_name; - pad1 = 0; - pad2 = 0; - disposition = in_disposition; - type = MACH_MSG_PORT_DESCRIPTOR; - } - - // For passing send rights to a port - MachMsgPortDescriptor(mach_port_t in_name) { - name = in_name; - pad1 = 0; - pad2 = 0; - disposition = MACH_MSG_TYPE_PORT_SEND; - type = MACH_MSG_PORT_DESCRIPTOR; - } - - // Copy constructor - MachMsgPortDescriptor(const MachMsgPortDescriptor& desc) { - name = desc.name; - pad1 = desc.pad1; - pad2 = desc.pad2; - disposition = desc.disposition; - type = desc.type; - } - - mach_port_t GetMachPort() const { - return name; - } - - mach_msg_type_name_t GetDisposition() const { - return disposition; - } - - // For convenience - operator mach_port_t() const { - return GetMachPort(); - } -}; - -//============================================================================== -// MachMessage: a wrapper for a Mach message -// (mach_msg_header_t, mach_msg_body_t, extra data) -// -// This considerably simplifies the construction of a message for sending -// and the getting at relevant data and descriptors for the receiver. -// -// This class can be initialized using external storage of an arbitrary size -// or it can manage storage internally. -// 1. If storage is allocated internally, the combined size of the descriptors -// plus data must be less than 1024. But as a benefit no memory allocation is -// necessary. -// 2. For external storage, a buffer of at least EmptyMessageSize() must be -// provided. -// -// A MachMessage object is used by ReceivePort::WaitForMessage -// and MachPortSender::SendMessage -// -class BASE_EXPORT MachMessage { - public: - static const size_t kEmptyMessageSize; - - virtual ~MachMessage(); - - // The receiver of the message can retrieve the raw data this way - u_int8_t *GetData() const { - return GetDataLength() > 0 ? GetDataPacket()->data : NULL; - } - - u_int32_t GetDataLength() const { - return EndianU32_LtoN(GetDataPacket()->data_length); - } - - // The message ID may be used as a code identifying the type of message - void SetMessageID(int32_t message_id) { - GetDataPacket()->id = EndianU32_NtoL(message_id); - } - - int32_t GetMessageID() const { return EndianU32_LtoN(GetDataPacket()->id); } - - // Adds a descriptor (typically a Mach port) to be translated - // returns true if successful, otherwise not enough space - bool AddDescriptor(const MachMsgPortDescriptor &desc); - - int GetDescriptorCount() const { - return storage_->body.msgh_descriptor_count; - } - - MachMsgPortDescriptor *GetDescriptor(int n) const; - - // Convenience method which gets the Mach port described by the descriptor - mach_port_t GetTranslatedPort(int n) const; - - // A simple message is one with no descriptors - bool IsSimpleMessage() const { return GetDescriptorCount() == 0; } - - // Sets raw data for the message (returns false if not enough space) - bool SetData(const void* data, int32_t data_length); - - protected: - // Consider this an abstract base class - must create an actual instance - // of MachReceiveMessage or MachSendMessage - MachMessage(); - - // Constructor for use with preallocate storage. - // storage_length must be >= EmptyMessageSize() - MachMessage(void *storage, size_t storage_length); - - friend class ReceivePort; - friend class MachPortSender; - - // Represents raw data in our message - struct MessageDataPacket { - int32_t id; // little-endian - int32_t data_length; // little-endian - u_int8_t data[1]; // actual size limited by storage_length_bytes_ - }; - - MessageDataPacket* GetDataPacket() const; - - void SetDescriptorCount(int n); - void SetDescriptor(int n, const MachMsgPortDescriptor &desc); - - // Returns total message size setting msgh_size in the header to this value - int CalculateSize(); - - // Returns total storage size that this object can grow to, this is inclusive - // of the Mach header. - size_t MaxSize() const { return storage_length_bytes_; } - - mach_msg_header_t *Head() const { return &(storage_->head); } - - private: - struct MachMessageData { - mach_msg_header_t head; - mach_msg_body_t body; - // descriptors and data may be embedded here. - u_int8_t padding[1024]; - }; - - MachMessageData *storage_; - size_t storage_length_bytes_; - bool own_storage_; // Is storage owned by this object? -}; - -//============================================================================== -// MachReceiveMessage and MachSendMessage are useful to separate the idea -// of a Mach message being sent and being received, and adds increased type -// safety: -// ReceivePort::WaitForMessage() only accepts a MachReceiveMessage -// MachPortSender::SendMessage() only accepts a MachSendMessage - -//============================================================================== -class MachReceiveMessage : public MachMessage { - public: - MachReceiveMessage() : MachMessage() {} - MachReceiveMessage(void *storage, size_t storage_length) - : MachMessage(storage, storage_length) {} - - private: - DISALLOW_COPY_AND_ASSIGN(MachReceiveMessage); -}; - -//============================================================================== -class BASE_EXPORT MachSendMessage : public MachMessage { - public: - explicit MachSendMessage(int32_t message_id); - MachSendMessage(void *storage, size_t storage_length, int32_t message_id); - - private: - void Initialize(int32_t message_id); - - DISALLOW_COPY_AND_ASSIGN(MachSendMessage); -}; - -//============================================================================== -// Represents a Mach port for which we have receive rights -class BASE_EXPORT ReceivePort { - public: - // Creates a new Mach port for receiving messages and registers a name for it - explicit ReceivePort(const char *receive_port_name); - - // Given an already existing Mach port, use it. We take ownership of the - // port and deallocate it in our destructor. - explicit ReceivePort(mach_port_t receive_port); - - // Create a new Mach port for receiving messages - ReceivePort(); - - ~ReceivePort(); - - // Waits on the Mach port until message received or timeout. If |timeout| is - // MACH_MSG_TIMEOUT_NONE, this method waits forever. - kern_return_t WaitForMessage(MachReceiveMessage *out_message, - mach_msg_timeout_t timeout); - - // The underlying Mach port that we wrap - mach_port_t GetPort() const { return port_; } - - private: - mach_port_t port_; - kern_return_t init_result_; - - DISALLOW_COPY_AND_ASSIGN(ReceivePort); -}; - -//============================================================================== -// Represents a Mach port for which we have send rights -class BASE_EXPORT MachPortSender { - public: - // get a port with send rights corresponding to a named registered service - explicit MachPortSender(const char *receive_port_name); - - - // Given an already existing Mach port, use it. Does not take ownership of - // |send_port|. - explicit MachPortSender(mach_port_t send_port); - - kern_return_t SendMessage(const MachSendMessage& message, - mach_msg_timeout_t timeout); - - mach_port_t GetPort() const { return send_port_; } - - private: - mach_port_t send_port_; - kern_return_t init_result_; - - DISALLOW_COPY_AND_ASSIGN(MachPortSender); -}; - -//============================================================================== -// Static utility functions. - -namespace mac { - -// Returns the number of Mach ports to which the given task has a right. -// Note that unless the calling task has send rights to the passed task port, -// this will fail unless the calling task is running as root. -kern_return_t BASE_EXPORT GetNumberOfMachPorts(mach_port_t task_port, - int* port_count); - -} // namespace mac - -} // namespace base - -#endif // BASE_MACH_IPC_MAC_H_ diff --git a/base/mach_ipc_mac.mm b/base/mach_ipc_mac.mm deleted file mode 100644 index 6f2575e..0000000 --- a/base/mach_ipc_mac.mm +++ /dev/null @@ -1,358 +0,0 @@ -// 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 "base/mach_ipc_mac.h" - -#import <Foundation/Foundation.h> -#include <mach/vm_map.h> - -#include <stdio.h> -#include "base/logging.h" - -namespace base { - -// static -const size_t MachMessage::kEmptyMessageSize = sizeof(mach_msg_header_t) + - sizeof(mach_msg_body_t) + sizeof(MessageDataPacket); - -//============================================================================== -MachSendMessage::MachSendMessage(int32_t message_id) : MachMessage() { - Initialize(message_id); -} - -MachSendMessage::MachSendMessage(void *storage, size_t storage_length, - int32_t message_id) - : MachMessage(storage, storage_length) { - Initialize(message_id); -} - -void MachSendMessage::Initialize(int32_t message_id) { - Head()->msgh_bits = MACH_MSGH_BITS(MACH_MSG_TYPE_COPY_SEND, 0); - - // head.msgh_remote_port = ...; // filled out in MachPortSender::SendMessage() - Head()->msgh_local_port = MACH_PORT_NULL; - Head()->msgh_reserved = 0; - Head()->msgh_id = 0; - - SetDescriptorCount(0); // start out with no descriptors - - SetMessageID(message_id); - SetData(NULL, 0); // client may add data later -} - -//============================================================================== -MachMessage::MachMessage() - : storage_(new MachMessageData), // Allocate storage_ ourselves - storage_length_bytes_(sizeof(MachMessageData)), - own_storage_(true) { - memset(storage_, 0, storage_length_bytes_); -} - -//============================================================================== -MachMessage::MachMessage(void *storage, size_t storage_length) - : storage_(static_cast<MachMessageData*>(storage)), - storage_length_bytes_(storage_length), - own_storage_(false) { - DCHECK(storage); - DCHECK_GE(storage_length, kEmptyMessageSize); -} - -//============================================================================== -MachMessage::~MachMessage() { - if (own_storage_) { - delete storage_; - storage_ = NULL; - } -} - -//============================================================================== -// returns true if successful -bool MachMessage::SetData(const void* data, - int32_t data_length) { - // Enforce the fact that it's only safe to call this method once on a - // message. - DCHECK(GetDataPacket()->data_length == 0); - - // first check to make sure we have enough space - int size = CalculateSize(); - int new_size = size + data_length; - - if ((unsigned)new_size > storage_length_bytes_) { - return false; // not enough space - } - - GetDataPacket()->data_length = EndianU32_NtoL(data_length); - if (data) memcpy(GetDataPacket()->data, data, data_length); - - // Update the Mach header with the new aligned size of the message. - CalculateSize(); - - return true; -} - -//============================================================================== -// calculates and returns the total size of the message -// Currently, the entire message MUST fit inside of the MachMessage -// messsage size <= EmptyMessageSize() -int MachMessage::CalculateSize() { - int size = sizeof(mach_msg_header_t) + sizeof(mach_msg_body_t); - - // add space for MessageDataPacket - int32_t alignedDataLength = (GetDataLength() + 3) & ~0x3; - size += 2*sizeof(int32_t) + alignedDataLength; - - // add space for descriptors - size += GetDescriptorCount() * sizeof(MachMsgPortDescriptor); - - Head()->msgh_size = size; - - return size; -} - -//============================================================================== -MachMessage::MessageDataPacket *MachMessage::GetDataPacket() const { - int desc_size = sizeof(MachMsgPortDescriptor)*GetDescriptorCount(); - MessageDataPacket *packet = - reinterpret_cast<MessageDataPacket*>(storage_->padding + desc_size); - - return packet; -} - -//============================================================================== -void MachMessage::SetDescriptor(int n, - const MachMsgPortDescriptor &desc) { - MachMsgPortDescriptor *desc_array = - reinterpret_cast<MachMsgPortDescriptor*>(storage_->padding); - desc_array[n] = desc; -} - -//============================================================================== -// returns true if successful otherwise there was not enough space -bool MachMessage::AddDescriptor(const MachMsgPortDescriptor &desc) { - // first check to make sure we have enough space - int size = CalculateSize(); - int new_size = size + sizeof(MachMsgPortDescriptor); - - if ((unsigned)new_size > storage_length_bytes_) { - return false; // not enough space - } - - // unfortunately, we need to move the data to allow space for the - // new descriptor - u_int8_t *p = reinterpret_cast<u_int8_t*>(GetDataPacket()); - bcopy(p, p+sizeof(MachMsgPortDescriptor), GetDataLength()+2*sizeof(int32_t)); - - SetDescriptor(GetDescriptorCount(), desc); - SetDescriptorCount(GetDescriptorCount() + 1); - - CalculateSize(); - - return true; -} - -//============================================================================== -void MachMessage::SetDescriptorCount(int n) { - storage_->body.msgh_descriptor_count = n; - - if (n > 0) { - Head()->msgh_bits |= MACH_MSGH_BITS_COMPLEX; - } else { - Head()->msgh_bits &= ~MACH_MSGH_BITS_COMPLEX; - } -} - -//============================================================================== -MachMsgPortDescriptor *MachMessage::GetDescriptor(int n) const { - if (n < GetDescriptorCount()) { - MachMsgPortDescriptor *desc = - reinterpret_cast<MachMsgPortDescriptor*>(storage_->padding); - return desc + n; - } - - return nil; -} - -//============================================================================== -mach_port_t MachMessage::GetTranslatedPort(int n) const { - if (n < GetDescriptorCount()) { - return GetDescriptor(n)->GetMachPort(); - } - return MACH_PORT_NULL; -} - -#pragma mark - - -//============================================================================== -// create a new mach port for receiving messages and register a name for it -ReceivePort::ReceivePort(const char *receive_port_name) { - mach_port_t current_task = mach_task_self(); - - init_result_ = mach_port_allocate(current_task, - MACH_PORT_RIGHT_RECEIVE, - &port_); - - if (init_result_ != KERN_SUCCESS) - return; - - init_result_ = mach_port_insert_right(current_task, - port_, - port_, - MACH_MSG_TYPE_MAKE_SEND); - - if (init_result_ != KERN_SUCCESS) - return; - - // Without |NSMachPortDeallocateNone|, the NSMachPort seems to deallocate - // receive rights on port when it is eventually released. It is not necessary - // to deallocate any rights here as |port_| is fully deallocated in the - // ReceivePort destructor. - NSPort *ns_port = [NSMachPort portWithMachPort:port_ - options:NSMachPortDeallocateNone]; - NSString *port_name = [NSString stringWithUTF8String:receive_port_name]; - [[NSMachBootstrapServer sharedInstance] registerPort:ns_port name:port_name]; -} - -//============================================================================== -// create a new mach port for receiving messages -ReceivePort::ReceivePort() { - mach_port_t current_task = mach_task_self(); - - init_result_ = mach_port_allocate(current_task, - MACH_PORT_RIGHT_RECEIVE, - &port_); - - if (init_result_ != KERN_SUCCESS) - return; - - init_result_ = mach_port_insert_right(current_task, - port_, - port_, - MACH_MSG_TYPE_MAKE_SEND); -} - -//============================================================================== -// Given an already existing mach port, use it. We take ownership of the -// port and deallocate it in our destructor. -ReceivePort::ReceivePort(mach_port_t receive_port) - : port_(receive_port), - init_result_(KERN_SUCCESS) { -} - -//============================================================================== -ReceivePort::~ReceivePort() { - if (init_result_ == KERN_SUCCESS) - mach_port_deallocate(mach_task_self(), port_); -} - -//============================================================================== -kern_return_t ReceivePort::WaitForMessage(MachReceiveMessage *out_message, - mach_msg_timeout_t timeout) { - if (!out_message) { - return KERN_INVALID_ARGUMENT; - } - - // return any error condition encountered in constructor - if (init_result_ != KERN_SUCCESS) - return init_result_; - - out_message->Head()->msgh_bits = 0; - out_message->Head()->msgh_local_port = port_; - out_message->Head()->msgh_remote_port = MACH_PORT_NULL; - out_message->Head()->msgh_reserved = 0; - out_message->Head()->msgh_id = 0; - - mach_msg_option_t rcv_options = MACH_RCV_MSG; - if (timeout != MACH_MSG_TIMEOUT_NONE) - rcv_options |= MACH_RCV_TIMEOUT; - - kern_return_t result = mach_msg(out_message->Head(), - rcv_options, - 0, - out_message->MaxSize(), - port_, - timeout, // timeout in ms - MACH_PORT_NULL); - - return result; -} - -#pragma mark - - -//============================================================================== -// get a port with send rights corresponding to a named registered service -MachPortSender::MachPortSender(const char *receive_port_name) { - mach_port_t bootstrap_port = 0; - init_result_ = task_get_bootstrap_port(mach_task_self(), &bootstrap_port); - - if (init_result_ != KERN_SUCCESS) - return; - - init_result_ = bootstrap_look_up(bootstrap_port, - const_cast<char*>(receive_port_name), - &send_port_); -} - -//============================================================================== -MachPortSender::MachPortSender(mach_port_t send_port) - : send_port_(send_port), - init_result_(KERN_SUCCESS) { -} - -//============================================================================== -kern_return_t MachPortSender::SendMessage(const MachSendMessage& message, - mach_msg_timeout_t timeout) { - if (message.Head()->msgh_size == 0) { - NOTREACHED(); - return KERN_INVALID_VALUE; // just for safety -- never should occur - }; - - if (init_result_ != KERN_SUCCESS) - return init_result_; - - message.Head()->msgh_remote_port = send_port_; - - kern_return_t result = mach_msg(message.Head(), - MACH_SEND_MSG | MACH_SEND_TIMEOUT, - message.Head()->msgh_size, - 0, - MACH_PORT_NULL, - timeout, // timeout in ms - MACH_PORT_NULL); - - return result; -} - -//============================================================================== - -namespace mac { - -kern_return_t GetNumberOfMachPorts(mach_port_t task_port, int* num_ports) { - mach_port_name_array_t names; - mach_msg_type_number_t names_count; - mach_port_type_array_t types; - mach_msg_type_number_t types_count; - - // A friendlier interface would allow NULL buffers to only get the counts. - kern_return_t kr = mach_port_names(task_port, &names, &names_count, - &types, &types_count); - if (kr != KERN_SUCCESS) - return kr; - - // The documentation states this is an invariant. - DCHECK_EQ(names_count, types_count); - *num_ports = names_count; - - kr = vm_deallocate(mach_task_self(), - reinterpret_cast<vm_address_t>(names), - names_count * sizeof(mach_port_name_array_t)); - kr = vm_deallocate(mach_task_self(), - reinterpret_cast<vm_address_t>(types), - types_count * sizeof(mach_port_type_array_t)); - - return kr; -} - -} // namespace mac - -} // namespace base diff --git a/chrome/browser/automation/testing_automation_provider.cc b/chrome/browser/automation/testing_automation_provider.cc index 6442107..e5bbdb1 100644 --- a/chrome/browser/automation/testing_automation_provider.cc +++ b/chrome/browser/automation/testing_automation_provider.cc @@ -159,7 +159,8 @@ #endif #if defined(OS_MACOSX) -#include "base/mach_ipc_mac.h" +#include <mach/mach.h> +#include <mach/mach_vm.h> #endif #if !defined(NO_TCMALLOC) && (defined(OS_LINUX) || defined(OS_CHROMEOS)) @@ -490,7 +491,29 @@ void TestingAutomationProvider::AppendTab(int handle, void TestingAutomationProvider::GetMachPortCount(int* port_count) { #if defined(OS_MACOSX) - base::mac::GetNumberOfMachPorts(mach_task_self(), port_count); + mach_port_name_array_t names; + mach_msg_type_number_t names_count; + mach_port_type_array_t types; + mach_msg_type_number_t types_count; + + mach_port_t port = mach_task_self(); + + // A friendlier interface would allow NULL buffers to only get the counts. + kern_return_t kr = mach_port_names(port, &names, &names_count, + &types, &types_count); + if (kr != KERN_SUCCESS) { + *port_count = 0; + return; + } + + // The documentation states this is an invariant. + DCHECK_EQ(names_count, types_count); + *port_count = names_count; + + mach_vm_deallocate(port, reinterpret_cast<mach_vm_address_t>(names), + names_count * sizeof(mach_port_name_array_t)); + mach_vm_deallocate(port, reinterpret_cast<mach_vm_address_t>(types), + types_count * sizeof(mach_port_type_array_t)); #else *port_count = 0; #endif diff --git a/content/app/content_main_runner.cc b/content/app/content_main_runner.cc index 257f701..46599ac 100644 --- a/content/app/content_main_runner.cc +++ b/content/app/content_main_runner.cc @@ -66,7 +66,6 @@ #elif defined(OS_MACOSX) #include "base/mac/scoped_nsautorelease_pool.h" #if !defined(OS_IOS) -#include "base/mach_ipc_mac.h" #include "base/power_monitor/power_monitor.h" #include "content/browser/mach_broker_mac.h" #include "content/common/sandbox_init_mac.h" diff --git a/content/browser/mach_broker_mac.mm b/content/browser/mach_broker_mac.mm index d765cf5..783b708 100644 --- a/content/browser/mach_broker_mac.mm +++ b/content/browser/mach_broker_mac.mm @@ -5,6 +5,7 @@ #include "content/browser/mach_broker_mac.h" #include <bsm/libbsm.h> +#include <servers/bootstrap.h> #include "base/bind.h" #include "base/bind_helpers.h" @@ -12,7 +13,6 @@ #include "base/logging.h" #include "base/mac/foundation_util.h" #include "base/mac/scoped_mach_port.h" -#include "base/mach_ipc_mac.h" #include "base/string_util.h" #include "base/stringprintf.h" #include "base/strings/sys_string_conversions.h" |