Commit b5fc75cd authored by Shawn Gallea's avatar Shawn Gallea Committed by Commit Bot

Pass WeakPtr of WebContentsProvider

This is needed to allow CastAppRpcInstance to know when
the object has been destroyed.

Bug: b/170144761
Test: Locally on device
Change-Id: I878ea2c45c644bd74e52bf365d8af91b0fc9ac1f
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2490177Reviewed-by: default avatarDaniel Nicoara <dnicoara@chromium.org>
Commit-Queue: Shawn Gallea <sagallea@google.com>
Cr-Commit-Position: refs/heads/master@{#819646}
parent 4c933a87
......@@ -21,7 +21,7 @@ CastAppRpcInstance::CastAppRpcInstance(
grpc::ServerCompletionQueue* cq,
scoped_refptr<base::SingleThreadTaskRunner> task_runner,
WebviewWindowManager* window_manager,
WebContentsProvider* web_contents_provider)
base::WeakPtr<WebContentsProvider> web_contents_provider)
: PlatformViewsRpcInstance(cq, task_runner, window_manager),
service_(service),
web_contents_provider_(web_contents_provider) {
......@@ -51,8 +51,12 @@ bool CastAppRpcInstance::Initialize() {
void CastAppRpcInstance::CreateCastAppWindowLink(int platform_view_id,
int app_window_id) {
app_id_ = platform_view_id;
if (!web_contents_provider_) {
OnError("web_contents_provider_ is null");
return;
}
app_id_ = platform_view_id;
content::WebContents* web_contents =
web_contents_provider_->GetWebContents(app_window_id);
if (!web_contents) {
......
......@@ -7,6 +7,7 @@
#include "chromecast/browser/webview/platform_views_rpc_instance.h"
#include "base/memory/weak_ptr.h"
#include "content/public/browser/web_contents_observer.h"
namespace chromecast {
......@@ -19,7 +20,7 @@ class CastAppRpcInstance : public PlatformViewsRpcInstance,
grpc::ServerCompletionQueue* cq,
scoped_refptr<base::SingleThreadTaskRunner> task_runner,
WebviewWindowManager* window_manager,
WebContentsProvider* web_contents_provider);
base::WeakPtr<WebContentsProvider> web_contents_provider);
~CastAppRpcInstance() override;
protected:
......@@ -30,7 +31,7 @@ class CastAppRpcInstance : public PlatformViewsRpcInstance,
void CreateCastAppWindowLink(int platform_view_id, int app_window_id);
void WebContentsDestroyed() override;
webview::PlatformViewsService::AsyncService* service_;
WebContentsProvider* web_contents_provider_;
base::WeakPtr<WebContentsProvider> web_contents_provider_;
DISALLOW_COPY_AND_ASSIGN(CastAppRpcInstance);
};
......
......@@ -18,7 +18,7 @@ PlatformViewsAsyncService::PlatformViewsAsyncService(
std::unique_ptr<webview::PlatformViewsService::AsyncService> service,
std::unique_ptr<grpc::ServerCompletionQueue> cq,
scoped_refptr<base::SingleThreadTaskRunner> ui_task_runner,
WebContentsProvider* web_contents_provider,
base::WeakPtr<WebContentsProvider> web_contents_provider,
bool enabled_for_dev)
: ui_task_runner_(std::move(ui_task_runner)),
cq_(std::move(cq)),
......
......@@ -8,6 +8,7 @@
#include <string>
#include "base/files/file_path.h"
#include "base/memory/weak_ptr.h"
#include "base/threading/platform_thread.h"
#include "base/threading/thread_task_runner_handle.h"
#include "chromecast/browser/webview/proto/webview.grpc.pb.h"
......@@ -26,7 +27,7 @@ class PlatformViewsAsyncService : public base::PlatformThread::Delegate {
std::unique_ptr<webview::PlatformViewsService::AsyncService> service,
std::unique_ptr<grpc::ServerCompletionQueue> cq,
scoped_refptr<base::SingleThreadTaskRunner> ui_task_runner,
WebContentsProvider* web_contents_provider,
base::WeakPtr<WebContentsProvider> web_contents_provider,
bool enabled_for_dev);
~PlatformViewsAsyncService() override;
......@@ -44,7 +45,7 @@ class PlatformViewsAsyncService : public base::PlatformThread::Delegate {
std::unique_ptr<webview::PlatformViewsService::AsyncService> service_;
WebviewWindowManager window_manager_;
WebContentsProvider* web_contents_provider_;
base::WeakPtr<WebContentsProvider> web_contents_provider_;
bool enabled_for_dev_;
DISALLOW_COPY_AND_ASSIGN(PlatformViewsAsyncService);
......
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