Commit bd7d3fa8 authored by Azeem Arshad's avatar Azeem Arshad Committed by Commit Bot

[AndroidSmsService] Dispatch message to establish connection in service worker

This adds a StartServiceWorkerAndDispatchLongRunningMessage call in
ConnectionEstablisherImpl to initiate background connection between
Android Messages for Web service worker to and the Tachyon backend.

Bug: 850823
Change-Id: I71b448b46f5802f741a1d7b6b4f09367defb0365
Reviewed-on: https://chromium-review.googlesource.com/1180417Reviewed-by: default avatarKyle Horimoto <khorimoto@chromium.org>
Reviewed-by: default avatarJeremy Klein <jlklein@chromium.org>
Commit-Queue: Azeem Arshad <azeemarshad@chromium.org>
Cr-Commit-Position: refs/heads/master@{#584235}
parent cbddee4f
......@@ -3,21 +3,53 @@
// found in the LICENSE file.
#include "chrome/browser/chromeos/android_sms/connection_establisher_impl.h"
#include "base/strings/utf_string_conversions.h"
#include "chrome/browser/chromeos/android_sms/android_sms_urls.h"
#include "content/public/browser/browser_thread.h"
#include "third_party/blink/public/common/message_port/string_message_codec.h"
namespace chromeos {
namespace android_sms {
namespace {
const char kStartStreamingMessageString[] = "start_streaming_connection";
}
ConnectionEstablisherImpl::ConnectionEstablisherImpl() = default;
ConnectionEstablisherImpl::~ConnectionEstablisherImpl() = default;
void ConnectionEstablisherImpl::EstablishConnection(
content::ServiceWorkerContext* service_worker_context) {
// TODO(azeemarshad): Send connection message to service worker using
// ServiceWorkerContext::StartServiceWorkerAndDispatchLongRunningMessage
// when https://chromium-review.googlesource.com/c/chromium/src/+/1119580
// is ready.
return;
content::BrowserThread::PostTask(
content::BrowserThread::IO, FROM_HERE,
base::BindOnce(&ConnectionEstablisherImpl::SendStartStreamingMessage,
base::Unretained(this), service_worker_context));
}
void ConnectionEstablisherImpl::SendStartStreamingMessage(
content::ServiceWorkerContext* service_worker_context) {
DCHECK_CURRENTLY_ON(content::BrowserThread::IO);
if (is_connected_)
return;
blink::TransferableMessage msg;
msg.owned_encoded_message = blink::EncodeStringMessage(
base::UTF8ToUTF16(kStartStreamingMessageString));
msg.encoded_message = msg.owned_encoded_message;
is_connected_ = true;
service_worker_context->StartServiceWorkerAndDispatchLongRunningMessage(
GetAndroidMessagesURL(), std::move(msg),
base::BindOnce(&ConnectionEstablisherImpl::OnMessageDispatchResult,
base::Unretained(this)));
}
void ConnectionEstablisherImpl::OnMessageDispatchResult(bool status) {
// When message dispatch result callback is called, it means that the service
// worker resolved it's message handler promise and is not holding a
// background connection.
is_connected_ = false;
}
} // namespace android_sms
......
......@@ -26,6 +26,11 @@ class ConnectionEstablisherImpl : public ConnectionEstablisher {
content::ServiceWorkerContext* service_worker_context) override;
private:
void SendStartStreamingMessage(
content::ServiceWorkerContext* service_worker_context);
void OnMessageDispatchResult(bool status);
bool is_connected_ = false;
DISALLOW_COPY_AND_ASSIGN(ConnectionEstablisherImpl);
};
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment