diff --git a/mojo/core/core.cc b/mojo/core/core.cc index 8422ec2..3ffa640 100644 --- a/mojo/core/core.cc +++ b/mojo/core/core.cc @@ -21,7 +21,7 @@ #include "base/strings/string_piece.h" #include "base/threading/thread_task_runner_handle.h" #include "base/time/time.h" -#include "base/trace_event/memory_dump_manager.h" +// #include "base/trace_event/memory_dump_manager.h" #include "build/build_config.h" #include "mojo/core/channel.h" #include "mojo/core/configuration.h" @@ -127,8 +127,8 @@ void RunMojoProcessErrorHandler(ProcessDisconnectHandler* disconnect_handler, Core::Core() { handles_.reset(new HandleTable); - base::trace_event::MemoryDumpManager::GetInstance()->RegisterDumpProvider( - handles_.get(), "MojoHandleTable", nullptr); + // base::trace_event::MemoryDumpManager::GetInstance()->RegisterDumpProvider( + // handles_.get(), "MojoHandleTable", nullptr); } Core::~Core() { @@ -142,8 +142,8 @@ Core::~Core() { base::BindOnce(&Core::PassNodeControllerToIOThread, base::Passed(&node_controller_))); } - base::trace_event::MemoryDumpManager::GetInstance() - ->UnregisterAndDeleteDumpProviderSoon(std::move(handles_)); + // base::trace_event::MemoryDumpManager::GetInstance() + // ->UnregisterAndDeleteDumpProviderSoon(std::move(handles_)); } void Core::SetIOTaskRunner(scoped_refptr io_task_runner) { diff --git a/mojo/core/user_message_impl.cc b/mojo/core/user_message_impl.cc index d4a4da1..9cb8284 100644 --- a/mojo/core/user_message_impl.cc +++ b/mojo/core/user_message_impl.cc @@ -13,10 +13,10 @@ #include "base/no_destructor.h" #include "base/numerics/safe_conversions.h" #include "base/numerics/safe_math.h" -#include "base/trace_event/memory_allocator_dump.h" -#include "base/trace_event/memory_dump_manager.h" -#include "base/trace_event/memory_dump_provider.h" -#include "base/trace_event/trace_event.h" +// #include "base/trace_event/memory_allocator_dump.h" +// #include "base/trace_event/memory_dump_manager.h" +// #include "base/trace_event/memory_dump_provider.h" +// #include "base/trace_event/trace_event.h" #include "mojo/core/core.h" #include "mojo/core/node_channel.h" #include "mojo/core/node_controller.h" @@ -271,36 +271,36 @@ void DecrementMessageCount() { base::subtle::NoBarrier_AtomicIncrement(&g_message_count, -1); } -class MessageMemoryDumpProvider : public base::trace_event::MemoryDumpProvider { - public: - MessageMemoryDumpProvider() { - base::trace_event::MemoryDumpManager::GetInstance()->RegisterDumpProvider( - this, "MojoMessages", nullptr); - } - - ~MessageMemoryDumpProvider() override { - base::trace_event::MemoryDumpManager::GetInstance()->UnregisterDumpProvider( - this); - } - - private: - // base::trace_event::MemoryDumpProvider: - bool OnMemoryDump(const base::trace_event::MemoryDumpArgs& args, - base::trace_event::ProcessMemoryDump* pmd) override { - auto* dump = pmd->CreateAllocatorDump("mojo/messages"); - dump->AddScalar(base::trace_event::MemoryAllocatorDump::kNameObjectCount, - base::trace_event::MemoryAllocatorDump::kUnitsObjects, - base::subtle::NoBarrier_Load(&g_message_count)); - return true; - } - - DISALLOW_COPY_AND_ASSIGN(MessageMemoryDumpProvider); -}; - -void EnsureMemoryDumpProviderExists() { - static base::NoDestructor provider; - ALLOW_UNUSED_LOCAL(provider); -} +// class MessageMemoryDumpProvider : public base::trace_event::MemoryDumpProvider { +// public: +// MessageMemoryDumpProvider() { +// base::trace_event::MemoryDumpManager::GetInstance()->RegisterDumpProvider( +// this, "MojoMessages", nullptr); +// } + +// ~MessageMemoryDumpProvider() override { +// base::trace_event::MemoryDumpManager::GetInstance()->UnregisterDumpProvider( +// this); +// } + +// private: +// // base::trace_event::MemoryDumpProvider: +// bool OnMemoryDump(const base::trace_event::MemoryDumpArgs& args, +// base::trace_event::ProcessMemoryDump* pmd) override { +// auto* dump = pmd->CreateAllocatorDump("mojo/messages"); +// dump->AddScalar(base::trace_event::MemoryAllocatorDump::kNameObjectCount, +// base::trace_event::MemoryAllocatorDump::kUnitsObjects, +// base::subtle::NoBarrier_Load(&g_message_count)); +// return true; +// } + +// DISALLOW_COPY_AND_ASSIGN(MessageMemoryDumpProvider); +// }; + +// void EnsureMemoryDumpProviderExists() { +// static base::NoDestructor provider; +// ALLOW_UNUSED_LOCAL(provider); +// } } // namespace @@ -648,7 +648,7 @@ void UserMessageImpl::FailHandleSerializationForTesting(bool fail) { UserMessageImpl::UserMessageImpl(ports::UserMessageEvent* message_event) : ports::UserMessage(&kUserMessageTypeInfo), message_event_(message_event) { - EnsureMemoryDumpProviderExists(); + // EnsureMemoryDumpProviderExists(); IncrementMessageCount(); } @@ -667,7 +667,7 @@ UserMessageImpl::UserMessageImpl(ports::UserMessageEvent* message_event, header_size_(header_size), user_payload_(user_payload), user_payload_size_(user_payload_size) { - EnsureMemoryDumpProviderExists(); + // EnsureMemoryDumpProviderExists(); IncrementMessageCount(); } diff --git a/mojo/public/cpp/bindings/lib/message_dumper.cc b/mojo/public/cpp/bindings/lib/message_dumper.cc index f187e45..35696bb 100644 --- a/mojo/public/cpp/bindings/lib/message_dumper.cc +++ b/mojo/public/cpp/bindings/lib/message_dumper.cc @@ -22,33 +22,33 @@ base::FilePath& DumpDirectory() { return *dump_directory; } -void WriteMessage(uint32_t identifier, - const mojo::MessageDumper::MessageEntry& entry) { - static uint64_t num = 0; - - if (!entry.interface_name) - return; - - base::FilePath message_directory = - DumpDirectory() - .AppendASCII(entry.interface_name) - .AppendASCII(base::NumberToString(identifier)); - - if (!base::DirectoryExists(message_directory) && - !base::CreateDirectory(message_directory)) { - LOG(ERROR) << "Failed to create" << message_directory.value(); - return; - } - - std::string filename = - base::NumberToString(num++) + "." + entry.method_name + ".mojomsg"; - base::FilePath path = message_directory.AppendASCII(filename); - base::File file(path, - base::File::FLAG_WRITE | base::File::FLAG_CREATE_ALWAYS); - - file.WriteAtCurrentPos(reinterpret_cast(entry.data_bytes.data()), - static_cast(entry.data_bytes.size())); -} +// void WriteMessage(uint32_t identifier, +// const mojo::MessageDumper::MessageEntry& entry) { +// static uint64_t num = 0; + +// if (!entry.interface_name) +// return; + +// base::FilePath message_directory = +// DumpDirectory() +// .AppendASCII(entry.interface_name) +// .AppendASCII(base::NumberToString(identifier)); + +// if (!base::DirectoryExists(message_directory) && +// !base::CreateDirectory(message_directory)) { +// LOG(ERROR) << "Failed to create" << message_directory.value(); +// return; +// } + +// std::string filename = +// base::NumberToString(num++) + "." + entry.method_name + ".mojomsg"; +// base::FilePath path = message_directory.AppendASCII(filename); +// base::File file(path, +// base::File::FLAG_WRITE | base::File::FLAG_CREATE_ALWAYS); + +// file.WriteAtCurrentPos(reinterpret_cast(entry.data_bytes.data()), +// static_cast(entry.data_bytes.size())); +// } } // namespace @@ -71,17 +71,17 @@ MessageDumper::MessageDumper() : identifier_(base::RandUint64()) {} MessageDumper::~MessageDumper() {} bool MessageDumper::Accept(mojo::Message* message) { - MessageEntry entry(message->data(), message->data_num_bytes(), - message->interface_name(), message->method_name()); + // MessageEntry entry(message->data(), message->data_num_bytes(), + // "unknown interface", "unknown name"); - static base::NoDestructor> task_runner( - base::CreateSequencedTaskRunnerWithTraits( - {base::MayBlock(), base::TaskPriority::USER_BLOCKING, - base::TaskShutdownBehavior::SKIP_ON_SHUTDOWN})); + // static base::NoDestructor> task_runner( + // base::CreateSequencedTaskRunnerWithTraits( + // {base::MayBlock(), base::TaskPriority::USER_BLOCKING, + // base::TaskShutdownBehavior::SKIP_ON_SHUTDOWN})); - (*task_runner) - ->PostTask(FROM_HERE, - base::BindOnce(&WriteMessage, identifier_, std::move(entry))); + // (*task_runner) + // ->PostTask(FROM_HERE, + // base::BindOnce(&WriteMessage, identifier_, std::move(entry))); return true; } diff --git a/mojo/public/cpp/system/file_data_pipe_producer.cc b/mojo/public/cpp/system/file_data_pipe_producer.cc index 842fe8f..6038bbe 100644 --- a/mojo/public/cpp/system/file_data_pipe_producer.cc +++ b/mojo/public/cpp/system/file_data_pipe_producer.cc @@ -266,13 +266,15 @@ void FileDataPipeProducer::WriteFromPath(const base::FilePath& path, void FileDataPipeProducer::InitializeNewRequest(CompletionCallback callback) { DCHECK(!file_sequence_state_); - auto file_task_runner = base::CreateSequencedTaskRunnerWithTraits( - {base::MayBlock(), base::TaskPriority::BACKGROUND}); - file_sequence_state_ = new FileSequenceState( - std::move(producer_), file_task_runner, - base::BindOnce(&FileDataPipeProducer::OnWriteComplete, - weak_factory_.GetWeakPtr(), std::move(callback)), - base::SequencedTaskRunnerHandle::Get(), std::move(observer_)); + + LOG(FATAL) << "unsupported in libchrome"; + // auto file_task_runner = base::CreateSequencedTaskRunnerWithTraits( + // {base::MayBlock(), base::TaskPriority::BACKGROUND}); + // file_sequence_state_ = new FileSequenceState( + // std::move(producer_), file_task_runner, + // base::BindOnce(&FileDataPipeProducer::OnWriteComplete, + // weak_factory_.GetWeakPtr(), std::move(callback)), + // base::SequencedTaskRunnerHandle::Get(), std::move(observer_)); } void FileDataPipeProducer::OnWriteComplete( diff --git a/mojo/public/tools/bindings/mojom_bindings_generator.py b/mojo/public/tools/bindings/mojom_bindings_generator.py index affbe79..57a8031 100755 --- a/mojo/public/tools/bindings/mojom_bindings_generator.py +++ b/mojo/public/tools/bindings/mojom_bindings_generator.py @@ -174,7 +174,8 @@ class MojomProcessor(object): MakeImportStackMessage(imported_filename_stack + [rel_filename.path]) sys.exit(1) - tree = _UnpickleAST(_GetPicklePath(rel_filename, args.output_dir)) + tree = _UnpickleAST(_FindPicklePath(rel_filename, args.gen_directories + + [args.output_dir])) dirname = os.path.dirname(rel_filename.path) # Process all our imports first and collect the module object for each. @@ -256,6 +257,16 @@ def _Generate(args, remaining_args): return 0 +def _FindPicklePath(rel_filename, search_dirs): + filename, _ = os.path.splitext(rel_filename.relative_path()) + pickle_path = filename + '.p' + for search_dir in search_dirs: + path = os.path.join(search_dir, pickle_path) + if os.path.isfile(path): + return path + raise Exception("%s: Error: Could not find file in %r" % (pickle_path, search_dirs)) + + def _GetPicklePath(rel_filename, output_dir): filename, _ = os.path.splitext(rel_filename.relative_path()) pickle_path = filename + '.p' @@ -402,6 +413,9 @@ def main(): metavar="GENERATORS", default="c++,javascript,java", help="comma-separated list of generators") + generate_parser.add_argument( + "--gen_dir", dest="gen_directories", action="append", metavar="directory", + default=[], help="add a directory to be searched for the syntax trees.") generate_parser.add_argument( "-I", dest="import_directories", action="append", metavar="directory", default=[],