Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(114)

Unified Diff: mojo/services/html_viewer/web_message_port_channel_impl.cc

Issue 1099303002: Move html_viewer from mojo/services to components. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase Created 5 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: mojo/services/html_viewer/web_message_port_channel_impl.cc
diff --git a/mojo/services/html_viewer/web_message_port_channel_impl.cc b/mojo/services/html_viewer/web_message_port_channel_impl.cc
deleted file mode 100644
index 94e1b18db0a0d66169bffb217e85ca6445730019..0000000000000000000000000000000000000000
--- a/mojo/services/html_viewer/web_message_port_channel_impl.cc
+++ /dev/null
@@ -1,132 +0,0 @@
-// Copyright 2015 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 "mojo/services/html_viewer/web_message_port_channel_impl.h"
-
-#include "base/bind.h"
-#include "base/logging.h"
-#include "base/strings/string16.h"
-#include "third_party/WebKit/public/platform/WebMessagePortChannelClient.h"
-#include "third_party/WebKit/public/platform/WebString.h"
-#include "third_party/mojo/src/mojo/public/cpp/system/message_pipe.h"
-
-using blink::WebMessagePortChannel;
-using blink::WebMessagePortChannelArray;
-using blink::WebMessagePortChannelClient;
-using blink::WebString;
-
-namespace html_viewer {
-
-void WebMessagePortChannelImpl::CreatePair(
- blink::WebMessagePortChannel** channel1,
- blink::WebMessagePortChannel** channel2) {
- mojo::ScopedMessagePipeHandle pipe1;
- mojo::ScopedMessagePipeHandle pipe2;
- MojoResult result = mojo::CreateMessagePipe(nullptr, &pipe1, &pipe2);
- if (result != MOJO_RESULT_OK) {
- NOTREACHED();
- return;
- }
-
- *channel1 = new WebMessagePortChannelImpl(pipe1.Pass());;
- *channel2 = new WebMessagePortChannelImpl(pipe2.Pass());
-}
-
-WebMessagePortChannelImpl::WebMessagePortChannelImpl(
- mojo::ScopedMessagePipeHandle pipe)
- : client_(nullptr), pipe_(pipe.Pass()) {
- WaitForNextMessage();
-}
-
-WebMessagePortChannelImpl::~WebMessagePortChannelImpl() {
-}
-
-void WebMessagePortChannelImpl::setClient(WebMessagePortChannelClient* client) {
- client_ = client;
-}
-
-void WebMessagePortChannelImpl::destroy() {
- setClient(nullptr);
- delete this;
-}
-
-void WebMessagePortChannelImpl::postMessage(
- const WebString& message_as_string,
- WebMessagePortChannelArray* channels) {
- base::string16 string = message_as_string;
-
- std::vector<MojoHandle> handles;
- if (channels) {
- for (size_t i = 0; i < channels->size(); ++i) {
- WebMessagePortChannelImpl* channel =
- static_cast<WebMessagePortChannelImpl*>((*channels)[i]);
- handles.push_back(channel->pipe_.release().value());
- channel->handle_watcher_.Stop();
- }
- delete channels;
- }
-
- uint32_t num_handles = static_cast<uint32_t>(handles.size());
- MojoHandle* handles_ptr = handles.empty() ? nullptr : &handles[0];
-
- MojoResult result = MojoWriteMessage(
- pipe_.get().value(), string.c_str(),
- static_cast<uint32_t>(string.length() * sizeof(base::char16)),
- handles_ptr, num_handles, MOJO_WRITE_MESSAGE_FLAG_NONE);
- DCHECK_EQ(MOJO_RESULT_OK, result);
-}
-
-bool WebMessagePortChannelImpl::tryGetMessage(
- WebString* message,
- WebMessagePortChannelArray& channels) {
- uint32_t num_bytes = 0;
- uint32_t num_handles = 0;
- MojoResult result = MojoReadMessage(
- pipe_.get().value(), nullptr, &num_bytes, nullptr, &num_handles,
- MOJO_READ_MESSAGE_FLAG_NONE);
- if (result != MOJO_RESULT_RESOURCE_EXHAUSTED)
- return false;
-
- base::string16 message16;
- CHECK(num_bytes % sizeof(base::char16) == 0);
- message16.resize(num_bytes / sizeof(base::char16));
- std::vector<MojoHandle> handles;
- handles.resize(num_handles);
-
- MojoHandle* handles_ptr = handles.empty() ? nullptr : &handles[0];
- result = MojoReadMessage(
- pipe_.get().value(), &message16[0], &num_bytes, handles_ptr, &num_handles,
- MOJO_READ_MESSAGE_FLAG_NONE);
- if (result != MOJO_RESULT_OK) {
- NOTREACHED();
- return false;
- }
-
- *message = message16;
- WebMessagePortChannelArray ports(handles.size());
- for (size_t i = 0; i < handles.size(); ++i) {
- mojo::MessagePipeHandle mph(handles[i]);
- mojo::ScopedMessagePipeHandle handle(mph);
- ports[i] = new WebMessagePortChannelImpl(handle.Pass());
- }
- channels = ports;
- return true;
-}
-
-void WebMessagePortChannelImpl::WaitForNextMessage() {
- handle_watcher_.Start(
- pipe_.get(),
- MOJO_HANDLE_SIGNAL_READABLE,
- MOJO_DEADLINE_INDEFINITE,
- base::Bind(&WebMessagePortChannelImpl::OnMessageAvailable,
- base::Unretained(this)));
-}
-
-void WebMessagePortChannelImpl::OnMessageAvailable(MojoResult result) {
- DCHECK_EQ(MOJO_RESULT_OK, result);
- client_->messageAvailable();
- WaitForNextMessage();
-}
-
-} // namespace html_viewer
« no previous file with comments | « mojo/services/html_viewer/web_message_port_channel_impl.h ('k') | mojo/services/html_viewer/web_mime_registry_impl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698