Skip to content

Commit

Permalink
Remove android_webview/browser layer's dependency on native/
Browse files Browse the repository at this point in the history
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}
  • Loading branch information
hush authored and Commit bot committed Feb 26, 2015
1 parent 6fd5829 commit 7d13f84
Show file tree
Hide file tree
Showing 5 changed files with 47 additions and 11 deletions.
7 changes: 3 additions & 4 deletions android_webview/browser/aw_dev_tools_manager_delegate.cc
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

#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/json/json_writer.h"
#include "base/strings/stringprintf.h"
Expand Down Expand Up @@ -72,9 +72,8 @@ Target::Target(scoped_refptr<DevToolsAgentHost> agent_host)
}

std::string GetViewDescription(WebContents* web_contents) {
const android_webview::BrowserViewRenderer* bvr =
android_webview::AwContents::FromWebContents(web_contents)
->GetBrowserViewRenderer();
android_webview::BrowserViewRenderer* bvr =
android_webview::BrowserViewRenderer::FromWebContents(web_contents);
if (!bvr) return "";
base::DictionaryValue description;
description.SetBoolean("attached", bvr->attached_to_window());
Expand Down
34 changes: 34 additions & 0 deletions android_webview/browser/browser_view_renderer.cc
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,10 @@
#include "base/logging.h"
#include "base/strings/string_number_conversions.h"
#include "base/strings/stringprintf.h"
#include "base/supports_user_data.h"
#include "base/trace_event/trace_event_argument.h"
#include "cc/output/compositor_frame.h"
#include "content/public/browser/web_contents.h"
#include "content/public/common/content_switches.h"
#include "gpu/command_buffer/service/gpu_switches.h"
#include "third_party/skia/include/core/SkBitmap.h"
Expand All @@ -34,6 +36,26 @@ const size_t kBytesPerPixel = 4;
const size_t kMemoryAllocationStep = 5 * 1024 * 1024;
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

// static
Expand All @@ -52,6 +74,12 @@ void BrowserViewRenderer::CalculateTileMemoryPolicy() {
}
}

// static
BrowserViewRenderer* BrowserViewRenderer::FromWebContents(
content::WebContents* web_contents) {
return BrowserViewRendererUserData::GetBrowserViewRenderer(web_contents);
}

BrowserViewRenderer::BrowserViewRenderer(
BrowserViewRendererClient* client,
const scoped_refptr<base::SingleThreadTaskRunner>& ui_task_runner)
Expand All @@ -78,6 +106,12 @@ BrowserViewRenderer::BrowserViewRenderer(
BrowserViewRenderer::~BrowserViewRenderer() {
}

void BrowserViewRenderer::RegisterWithWebContents(
content::WebContents* web_contents) {
web_contents->SetUserData(kBrowserViewRendererUserDataKey,
new BrowserViewRendererUserData(this));
}

SharedRendererState* BrowserViewRenderer::GetAwDrawGLViewContext() {
return &shared_renderer_state_;
}
Expand Down
8 changes: 8 additions & 0 deletions android_webview/browser/browser_view_renderer.h
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,10 @@
class SkCanvas;
class SkPicture;

namespace content {
class WebContents;
}

namespace android_webview {

class BrowserViewRendererClient;
Expand All @@ -27,13 +31,17 @@ class BrowserViewRendererClient;
class BrowserViewRenderer : public content::SynchronousCompositorClient {
public:
static void CalculateTileMemoryPolicy();
static BrowserViewRenderer* FromWebContents(
content::WebContents* web_contents);

BrowserViewRenderer(
BrowserViewRendererClient* client,
const scoped_refptr<base::SingleThreadTaskRunner>& ui_task_runner);

~BrowserViewRenderer() override;

void RegisterWithWebContents(content::WebContents* web_contents);

SharedRendererState* GetAwDrawGLViewContext();
bool RequestDrawGL(bool wait_for_completion);

Expand Down
7 changes: 2 additions & 5 deletions android_webview/native/aw_contents.cc
Original file line number Diff line number Diff line change
Expand Up @@ -170,8 +170,9 @@ AwContents::AwContents(scoped_ptr<WebContents> web_contents)
base::subtle::NoBarrier_AtomicIncrement(&g_instance_count, 1);
icon_helper_.reset(new IconHelper(web_contents_.get()));
icon_helper_->SetListener(this);
web_contents_->SetUserData(kAwContentsUserDataKey,
web_contents_->SetUserData(android_webview::kAwContentsUserDataKey,
new AwContentsUserData(this));
browser_view_renderer_.RegisterWithWebContents(web_contents_.get());
render_view_host_ext_.reset(
new AwRenderViewHostExt(this, web_contents_.get()));

Expand Down Expand Up @@ -988,10 +989,6 @@ void AwContents::DidOverscroll(gfx::Vector2d overscroll_delta) {
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) {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
browser_view_renderer_.SetDipScale(dip_scale);
Expand Down
2 changes: 0 additions & 2 deletions android_webview/native/aw_contents.h
Original file line number Diff line number Diff line change
Expand Up @@ -206,8 +206,6 @@ class AwContents : public FindHelper::Listener,
float max_page_scale_factor) override;
void DidOverscroll(gfx::Vector2d overscroll_delta) override;

const BrowserViewRenderer* GetBrowserViewRenderer() const;

void ClearCache(JNIEnv* env, jobject obj, jboolean include_disk_files);
void SetPendingWebContentsForPopup(scoped_ptr<content::WebContents> pending);
jlong ReleasePopupAwContents(JNIEnv* env, jobject obj);
Expand Down

0 comments on commit 7d13f84

Please sign in to comment.