Commit 2a8ea0d0 authored by Gyuyoung Kim's avatar Gyuyoung Kim Committed by Commit Bot

Migrate ResourceBundleFileLoader class to new Mojo types

This CL applies the new Mojo types to functions
in ResourceBundleFileLoader class.

  - Convert FooRequest to mojo::PendingReceiver.
  - Convert FooPtrInfo to mojo::PendingRemote.
  - Convert mojo::Binding to mojo::Receiver.
  - Convert FooPtr to mojo::Remote.

Bug: 955171
Change-Id: Ia5f954e8c7e5fb57672ae374df5619e97789aaaa
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1873818Reviewed-by: default avatarOksana Zhuravlova <oksamyt@chromium.org>
Reviewed-by: default avatarColin Blundell <blundell@chromium.org>
Commit-Queue: Gyuyoung Kim <gyuyoung@igalia.com>
Cr-Commit-Position: refs/heads/master@{#709732}
parent bfc46a66
...@@ -22,7 +22,10 @@ ...@@ -22,7 +22,10 @@
#include "extensions/browser/extensions_browser_client.h" #include "extensions/browser/extensions_browser_client.h"
#include "extensions/browser/url_request_util.h" #include "extensions/browser/url_request_util.h"
#include "extensions/common/file_util.h" #include "extensions/common/file_util.h"
#include "mojo/public/cpp/bindings/strong_binding.h" #include "mojo/public/cpp/bindings/pending_receiver.h"
#include "mojo/public/cpp/bindings/pending_remote.h"
#include "mojo/public/cpp/bindings/receiver.h"
#include "mojo/public/cpp/bindings/remote.h"
#include "net/base/completion_once_callback.h" #include "net/base/completion_once_callback.h"
#include "net/base/mime_util.h" #include "net/base/mime_util.h"
#include "net/base/net_errors.h" #include "net/base/net_errors.h"
...@@ -78,13 +81,14 @@ scoped_refptr<base::RefCountedMemory> GetResource( ...@@ -78,13 +81,14 @@ scoped_refptr<base::RefCountedMemory> GetResource(
// component extensions. // component extensions.
class ResourceBundleFileLoader : public network::mojom::URLLoader { class ResourceBundleFileLoader : public network::mojom::URLLoader {
public: public:
static void CreateAndStart(const network::ResourceRequest& request, static void CreateAndStart(
network::mojom::URLLoaderRequest loader, const network::ResourceRequest& request,
network::mojom::URLLoaderClientPtrInfo client_info, mojo::PendingReceiver<network::mojom::URLLoader> loader,
const base::FilePath& filename, mojo::PendingRemote<network::mojom::URLLoaderClient> client_info,
int resource_id, const base::FilePath& filename,
const std::string& content_security_policy, int resource_id,
bool send_cors_header) { const std::string& content_security_policy,
bool send_cors_header) {
// Owns itself. Will live as long as its URLLoader and URLLoaderClientPtr // Owns itself. Will live as long as its URLLoader and URLLoaderClientPtr
// bindings are alive - essentially until either the client gives up or all // bindings are alive - essentially until either the client gives up or all
// file data has been sent to it. // file data has been sent to it.
...@@ -109,24 +113,24 @@ class ResourceBundleFileLoader : public network::mojom::URLLoader { ...@@ -109,24 +113,24 @@ class ResourceBundleFileLoader : public network::mojom::URLLoader {
private: private:
ResourceBundleFileLoader(const std::string& content_security_policy, ResourceBundleFileLoader(const std::string& content_security_policy,
bool send_cors_header) bool send_cors_header) {
: binding_(this) {
response_headers_ = extensions::BuildHttpHeaders( response_headers_ = extensions::BuildHttpHeaders(
content_security_policy, send_cors_header, base::Time()); content_security_policy, send_cors_header, base::Time());
} }
~ResourceBundleFileLoader() override = default; ~ResourceBundleFileLoader() override = default;
void Start(const network::ResourceRequest& request, void Start(
network::mojom::URLLoaderRequest loader, const network::ResourceRequest& request,
network::mojom::URLLoaderClientPtrInfo client_info, mojo::PendingReceiver<network::mojom::URLLoader> loader,
const base::FilePath& filename, mojo::PendingRemote<network::mojom::URLLoaderClient> client_info_remote,
int resource_id) { const base::FilePath& filename,
client_.Bind(std::move(client_info)); int resource_id) {
binding_.Bind(std::move(loader)); client_.Bind(std::move(client_info_remote));
binding_.set_connection_error_handler(base::BindOnce( receiver_.Bind(std::move(loader));
&ResourceBundleFileLoader::OnBindingError, base::Unretained(this))); receiver_.set_disconnect_handler(base::BindOnce(
client_.set_connection_error_handler(base::BindOnce( &ResourceBundleFileLoader::OnReceiverError, base::Unretained(this)));
&ResourceBundleFileLoader::OnConnectionError, base::Unretained(this))); client_.set_disconnect_handler(base::BindOnce(
&ResourceBundleFileLoader::OnMojoDisconnect, base::Unretained(this)));
auto data = GetResource(resource_id, request.url.host()); auto data = GetResource(resource_id, request.url.host());
std::string* read_mime_type = new std::string; std::string* read_mime_type = new std::string;
...@@ -173,18 +177,18 @@ class ResourceBundleFileLoader : public network::mojom::URLLoader { ...@@ -173,18 +177,18 @@ class ResourceBundleFileLoader : public network::mojom::URLLoader {
OnFileWritten(result); OnFileWritten(result);
} }
void OnConnectionError() { void OnMojoDisconnect() {
client_.reset(); client_.reset();
MaybeDeleteSelf(); MaybeDeleteSelf();
} }
void OnBindingError() { void OnReceiverError() {
binding_.Close(); receiver_.reset();
MaybeDeleteSelf(); MaybeDeleteSelf();
} }
void MaybeDeleteSelf() { void MaybeDeleteSelf() {
if (!binding_.is_bound() && !client_.is_bound()) if (!receiver_.is_bound() && !client_.is_bound())
delete this; delete this;
} }
...@@ -199,8 +203,8 @@ class ResourceBundleFileLoader : public network::mojom::URLLoader { ...@@ -199,8 +203,8 @@ class ResourceBundleFileLoader : public network::mojom::URLLoader {
MaybeDeleteSelf(); MaybeDeleteSelf();
} }
mojo::Binding<network::mojom::URLLoader> binding_; mojo::Receiver<network::mojom::URLLoader> receiver_{this};
network::mojom::URLLoaderClientPtr client_; mojo::Remote<network::mojom::URLLoaderClient> client_;
scoped_refptr<net::HttpResponseHeaders> response_headers_; scoped_refptr<net::HttpResponseHeaders> response_headers_;
base::WeakPtrFactory<ResourceBundleFileLoader> weak_factory_{this}; base::WeakPtrFactory<ResourceBundleFileLoader> weak_factory_{this};
......
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