Commit 7d13f84e authored by hush's avatar hush Committed by Commit bot

Remove android_webview/browser layer's dependency on native/

Exposed a function BrowserViewRenderer::FromWebContents to allow
android_webview/browser/ layer to get hold of the instance of
BrowserViewRenderer through WebContents, without the help of AwContents,
which is in android_webview/native/ layer.

BUG=459779, 460826

Review URL: https://codereview.chromium.org/950973003

Cr-Commit-Position: refs/heads/master@{#318264}
parent 6fd58296
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
#include "android_webview/browser/aw_dev_tools_manager_delegate.h" #include "android_webview/browser/aw_dev_tools_manager_delegate.h"
#include "android_webview/native/aw_contents.h" #include "android_webview/browser/browser_view_renderer.h"
#include "base/bind.h" #include "base/bind.h"
#include "base/json/json_writer.h" #include "base/json/json_writer.h"
#include "base/strings/stringprintf.h" #include "base/strings/stringprintf.h"
...@@ -72,9 +72,8 @@ Target::Target(scoped_refptr<DevToolsAgentHost> agent_host) ...@@ -72,9 +72,8 @@ Target::Target(scoped_refptr<DevToolsAgentHost> agent_host)
} }
std::string GetViewDescription(WebContents* web_contents) { std::string GetViewDescription(WebContents* web_contents) {
const android_webview::BrowserViewRenderer* bvr = android_webview::BrowserViewRenderer* bvr =
android_webview::AwContents::FromWebContents(web_contents) android_webview::BrowserViewRenderer::FromWebContents(web_contents);
->GetBrowserViewRenderer();
if (!bvr) return ""; if (!bvr) return "";
base::DictionaryValue description; base::DictionaryValue description;
description.SetBoolean("attached", bvr->attached_to_window()); description.SetBoolean("attached", bvr->attached_to_window());
......
...@@ -10,8 +10,10 @@ ...@@ -10,8 +10,10 @@
#include "base/logging.h" #include "base/logging.h"
#include "base/strings/string_number_conversions.h" #include "base/strings/string_number_conversions.h"
#include "base/strings/stringprintf.h" #include "base/strings/stringprintf.h"
#include "base/supports_user_data.h"
#include "base/trace_event/trace_event_argument.h" #include "base/trace_event/trace_event_argument.h"
#include "cc/output/compositor_frame.h" #include "cc/output/compositor_frame.h"
#include "content/public/browser/web_contents.h"
#include "content/public/common/content_switches.h" #include "content/public/common/content_switches.h"
#include "gpu/command_buffer/service/gpu_switches.h" #include "gpu/command_buffer/service/gpu_switches.h"
#include "third_party/skia/include/core/SkBitmap.h" #include "third_party/skia/include/core/SkBitmap.h"
...@@ -34,6 +36,26 @@ const size_t kBytesPerPixel = 4; ...@@ -34,6 +36,26 @@ const size_t kBytesPerPixel = 4;
const size_t kMemoryAllocationStep = 5 * 1024 * 1024; const size_t kMemoryAllocationStep = 5 * 1024 * 1024;
uint64 g_memory_override_in_bytes = 0u; uint64 g_memory_override_in_bytes = 0u;
const void* kBrowserViewRendererUserDataKey = &kBrowserViewRendererUserDataKey;
class BrowserViewRendererUserData : public base::SupportsUserData::Data {
public:
BrowserViewRendererUserData(BrowserViewRenderer* ptr) : bvr_(ptr) {}
static BrowserViewRenderer* GetBrowserViewRenderer(
content::WebContents* web_contents) {
if (!web_contents)
return NULL;
BrowserViewRendererUserData* data =
static_cast<BrowserViewRendererUserData*>(
web_contents->GetUserData(kBrowserViewRendererUserDataKey));
return data ? data->bvr_ : NULL;
}
private:
BrowserViewRenderer* bvr_;
};
} // namespace } // namespace
// static // static
...@@ -52,6 +74,12 @@ void BrowserViewRenderer::CalculateTileMemoryPolicy() { ...@@ -52,6 +74,12 @@ void BrowserViewRenderer::CalculateTileMemoryPolicy() {
} }
} }
// static
BrowserViewRenderer* BrowserViewRenderer::FromWebContents(
content::WebContents* web_contents) {
return BrowserViewRendererUserData::GetBrowserViewRenderer(web_contents);
}
BrowserViewRenderer::BrowserViewRenderer( BrowserViewRenderer::BrowserViewRenderer(
BrowserViewRendererClient* client, BrowserViewRendererClient* client,
const scoped_refptr<base::SingleThreadTaskRunner>& ui_task_runner) const scoped_refptr<base::SingleThreadTaskRunner>& ui_task_runner)
...@@ -78,6 +106,12 @@ BrowserViewRenderer::BrowserViewRenderer( ...@@ -78,6 +106,12 @@ BrowserViewRenderer::BrowserViewRenderer(
BrowserViewRenderer::~BrowserViewRenderer() { BrowserViewRenderer::~BrowserViewRenderer() {
} }
void BrowserViewRenderer::RegisterWithWebContents(
content::WebContents* web_contents) {
web_contents->SetUserData(kBrowserViewRendererUserDataKey,
new BrowserViewRendererUserData(this));
}
SharedRendererState* BrowserViewRenderer::GetAwDrawGLViewContext() { SharedRendererState* BrowserViewRenderer::GetAwDrawGLViewContext() {
return &shared_renderer_state_; return &shared_renderer_state_;
} }
......
...@@ -18,6 +18,10 @@ ...@@ -18,6 +18,10 @@
class SkCanvas; class SkCanvas;
class SkPicture; class SkPicture;
namespace content {
class WebContents;
}
namespace android_webview { namespace android_webview {
class BrowserViewRendererClient; class BrowserViewRendererClient;
...@@ -27,6 +31,8 @@ class BrowserViewRendererClient; ...@@ -27,6 +31,8 @@ class BrowserViewRendererClient;
class BrowserViewRenderer : public content::SynchronousCompositorClient { class BrowserViewRenderer : public content::SynchronousCompositorClient {
public: public:
static void CalculateTileMemoryPolicy(); static void CalculateTileMemoryPolicy();
static BrowserViewRenderer* FromWebContents(
content::WebContents* web_contents);
BrowserViewRenderer( BrowserViewRenderer(
BrowserViewRendererClient* client, BrowserViewRendererClient* client,
...@@ -34,6 +40,8 @@ class BrowserViewRenderer : public content::SynchronousCompositorClient { ...@@ -34,6 +40,8 @@ class BrowserViewRenderer : public content::SynchronousCompositorClient {
~BrowserViewRenderer() override; ~BrowserViewRenderer() override;
void RegisterWithWebContents(content::WebContents* web_contents);
SharedRendererState* GetAwDrawGLViewContext(); SharedRendererState* GetAwDrawGLViewContext();
bool RequestDrawGL(bool wait_for_completion); bool RequestDrawGL(bool wait_for_completion);
......
...@@ -170,8 +170,9 @@ AwContents::AwContents(scoped_ptr<WebContents> web_contents) ...@@ -170,8 +170,9 @@ AwContents::AwContents(scoped_ptr<WebContents> web_contents)
base::subtle::NoBarrier_AtomicIncrement(&g_instance_count, 1); base::subtle::NoBarrier_AtomicIncrement(&g_instance_count, 1);
icon_helper_.reset(new IconHelper(web_contents_.get())); icon_helper_.reset(new IconHelper(web_contents_.get()));
icon_helper_->SetListener(this); icon_helper_->SetListener(this);
web_contents_->SetUserData(kAwContentsUserDataKey, web_contents_->SetUserData(android_webview::kAwContentsUserDataKey,
new AwContentsUserData(this)); new AwContentsUserData(this));
browser_view_renderer_.RegisterWithWebContents(web_contents_.get());
render_view_host_ext_.reset( render_view_host_ext_.reset(
new AwRenderViewHostExt(this, web_contents_.get())); new AwRenderViewHostExt(this, web_contents_.get()));
...@@ -988,10 +989,6 @@ void AwContents::DidOverscroll(gfx::Vector2d overscroll_delta) { ...@@ -988,10 +989,6 @@ void AwContents::DidOverscroll(gfx::Vector2d overscroll_delta) {
env, obj.obj(), overscroll_delta.x(), overscroll_delta.y()); env, obj.obj(), overscroll_delta.x(), overscroll_delta.y());
} }
const BrowserViewRenderer* AwContents::GetBrowserViewRenderer() const {
return &browser_view_renderer_;
}
void AwContents::SetDipScale(JNIEnv* env, jobject obj, jfloat dip_scale) { void AwContents::SetDipScale(JNIEnv* env, jobject obj, jfloat dip_scale) {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
browser_view_renderer_.SetDipScale(dip_scale); browser_view_renderer_.SetDipScale(dip_scale);
......
...@@ -206,8 +206,6 @@ class AwContents : public FindHelper::Listener, ...@@ -206,8 +206,6 @@ class AwContents : public FindHelper::Listener,
float max_page_scale_factor) override; float max_page_scale_factor) override;
void DidOverscroll(gfx::Vector2d overscroll_delta) override; void DidOverscroll(gfx::Vector2d overscroll_delta) override;
const BrowserViewRenderer* GetBrowserViewRenderer() const;
void ClearCache(JNIEnv* env, jobject obj, jboolean include_disk_files); void ClearCache(JNIEnv* env, jobject obj, jboolean include_disk_files);
void SetPendingWebContentsForPopup(scoped_ptr<content::WebContents> pending); void SetPendingWebContentsForPopup(scoped_ptr<content::WebContents> pending);
jlong ReleasePopupAwContents(JNIEnv* env, jobject obj); jlong ReleasePopupAwContents(JNIEnv* env, jobject obj);
......
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