Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(112)

Side by Side Diff: android_webview/browser/browser_view_renderer.cc

Issue 950973003: Remove android_webview/browser layer's dependency on native (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « android_webview/browser/browser_view_renderer.h ('k') | android_webview/native/aw_contents.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "android_webview/browser/browser_view_renderer.h" 5 #include "android_webview/browser/browser_view_renderer.h"
6 6
7 #include "android_webview/browser/browser_view_renderer_client.h" 7 #include "android_webview/browser/browser_view_renderer_client.h"
8 #include "base/auto_reset.h" 8 #include "base/auto_reset.h"
9 #include "base/command_line.h" 9 #include "base/command_line.h"
10 #include "base/logging.h" 10 #include "base/logging.h"
11 #include "base/strings/string_number_conversions.h" 11 #include "base/strings/string_number_conversions.h"
12 #include "base/strings/stringprintf.h" 12 #include "base/strings/stringprintf.h"
13 #include "base/supports_user_data.h"
13 #include "base/trace_event/trace_event_argument.h" 14 #include "base/trace_event/trace_event_argument.h"
14 #include "cc/output/compositor_frame.h" 15 #include "cc/output/compositor_frame.h"
16 #include "content/public/browser/web_contents.h"
15 #include "content/public/common/content_switches.h" 17 #include "content/public/common/content_switches.h"
16 #include "gpu/command_buffer/service/gpu_switches.h" 18 #include "gpu/command_buffer/service/gpu_switches.h"
17 #include "third_party/skia/include/core/SkBitmap.h" 19 #include "third_party/skia/include/core/SkBitmap.h"
18 #include "third_party/skia/include/core/SkCanvas.h" 20 #include "third_party/skia/include/core/SkCanvas.h"
19 #include "third_party/skia/include/core/SkPicture.h" 21 #include "third_party/skia/include/core/SkPicture.h"
20 #include "third_party/skia/include/core/SkPictureRecorder.h" 22 #include "third_party/skia/include/core/SkPictureRecorder.h"
21 #include "ui/gfx/geometry/vector2d_conversions.h" 23 #include "ui/gfx/geometry/vector2d_conversions.h"
22 24
23 namespace android_webview { 25 namespace android_webview {
24 26
25 namespace { 27 namespace {
26 28
27 const double kEpsilon = 1e-8; 29 const double kEpsilon = 1e-8;
28 30
29 const int64 kFallbackTickTimeoutInMilliseconds = 100; 31 const int64 kFallbackTickTimeoutInMilliseconds = 100;
30 32
31 // Used to calculate memory allocation. Determined experimentally. 33 // Used to calculate memory allocation. Determined experimentally.
32 const size_t kMemoryMultiplier = 20; 34 const size_t kMemoryMultiplier = 20;
33 const size_t kBytesPerPixel = 4; 35 const size_t kBytesPerPixel = 4;
34 const size_t kMemoryAllocationStep = 5 * 1024 * 1024; 36 const size_t kMemoryAllocationStep = 5 * 1024 * 1024;
35 uint64 g_memory_override_in_bytes = 0u; 37 uint64 g_memory_override_in_bytes = 0u;
36 38
39 const void* kBrowserViewRendererUserDataKey = &kBrowserViewRendererUserDataKey;
40
41 class BrowserViewRendererUserData : public base::SupportsUserData::Data {
42 public:
43 BrowserViewRendererUserData(BrowserViewRenderer* ptr) : bvr_(ptr) {}
44
45 static BrowserViewRenderer* GetBrowserViewRenderer(
46 content::WebContents* web_contents) {
47 if (!web_contents)
48 return NULL;
49 BrowserViewRendererUserData* data =
50 static_cast<BrowserViewRendererUserData*>(
51 web_contents->GetUserData(kBrowserViewRendererUserDataKey));
52 return data ? data->bvr_ : NULL;
53 }
54
55 private:
56 BrowserViewRenderer* bvr_;
57 };
58
37 } // namespace 59 } // namespace
38 60
39 // static 61 // static
40 void BrowserViewRenderer::CalculateTileMemoryPolicy() { 62 void BrowserViewRenderer::CalculateTileMemoryPolicy() {
41 base::CommandLine* cl = base::CommandLine::ForCurrentProcess(); 63 base::CommandLine* cl = base::CommandLine::ForCurrentProcess();
42 64
43 // If the value was overridden on the command line, use the specified value. 65 // If the value was overridden on the command line, use the specified value.
44 bool client_hard_limit_bytes_overridden = 66 bool client_hard_limit_bytes_overridden =
45 cl->HasSwitch(switches::kForceGpuMemAvailableMb); 67 cl->HasSwitch(switches::kForceGpuMemAvailableMb);
46 if (client_hard_limit_bytes_overridden) { 68 if (client_hard_limit_bytes_overridden) {
47 base::StringToUint64( 69 base::StringToUint64(
48 base::CommandLine::ForCurrentProcess()->GetSwitchValueASCII( 70 base::CommandLine::ForCurrentProcess()->GetSwitchValueASCII(
49 switches::kForceGpuMemAvailableMb), 71 switches::kForceGpuMemAvailableMb),
50 &g_memory_override_in_bytes); 72 &g_memory_override_in_bytes);
51 g_memory_override_in_bytes *= 1024 * 1024; 73 g_memory_override_in_bytes *= 1024 * 1024;
52 } 74 }
53 } 75 }
54 76
77 // static
78 BrowserViewRenderer* BrowserViewRenderer::FromWebContents(
79 content::WebContents* web_contents) {
80 return BrowserViewRendererUserData::GetBrowserViewRenderer(web_contents);
81 }
82
55 BrowserViewRenderer::BrowserViewRenderer( 83 BrowserViewRenderer::BrowserViewRenderer(
56 BrowserViewRendererClient* client, 84 BrowserViewRendererClient* client,
57 const scoped_refptr<base::SingleThreadTaskRunner>& ui_task_runner) 85 const scoped_refptr<base::SingleThreadTaskRunner>& ui_task_runner)
58 : client_(client), 86 : client_(client),
59 shared_renderer_state_(ui_task_runner, this), 87 shared_renderer_state_(ui_task_runner, this),
60 ui_task_runner_(ui_task_runner), 88 ui_task_runner_(ui_task_runner),
61 compositor_(NULL), 89 compositor_(NULL),
62 is_paused_(false), 90 is_paused_(false),
63 view_visible_(false), 91 view_visible_(false),
64 window_visible_(false), 92 window_visible_(false),
65 attached_to_window_(false), 93 attached_to_window_(false),
66 hardware_enabled_(false), 94 hardware_enabled_(false),
67 dip_scale_(0.0), 95 dip_scale_(0.0),
68 page_scale_factor_(1.0), 96 page_scale_factor_(1.0),
69 on_new_picture_enable_(false), 97 on_new_picture_enable_(false),
70 clear_view_(false), 98 clear_view_(false),
71 compositor_needs_continuous_invalidate_(false), 99 compositor_needs_continuous_invalidate_(false),
72 invalidate_after_composite_(false), 100 invalidate_after_composite_(false),
73 block_invalidates_(false), 101 block_invalidates_(false),
74 fallback_tick_pending_(false) { 102 fallback_tick_pending_(false) {
75 } 103 }
76 104
77 BrowserViewRenderer::~BrowserViewRenderer() { 105 BrowserViewRenderer::~BrowserViewRenderer() {
78 } 106 }
79 107
108 void BrowserViewRenderer::RegisterWithWebContents(
109 content::WebContents* web_contents) {
110 web_contents->SetUserData(kBrowserViewRendererUserDataKey,
111 new BrowserViewRendererUserData(this));
112 }
113
80 SharedRendererState* BrowserViewRenderer::GetAwDrawGLViewContext() { 114 SharedRendererState* BrowserViewRenderer::GetAwDrawGLViewContext() {
81 return &shared_renderer_state_; 115 return &shared_renderer_state_;
82 } 116 }
83 117
84 bool BrowserViewRenderer::RequestDrawGL(bool wait_for_completion) { 118 bool BrowserViewRenderer::RequestDrawGL(bool wait_for_completion) {
85 return client_->RequestDrawGL(wait_for_completion); 119 return client_->RequestDrawGL(wait_for_completion);
86 } 120 }
87 121
88 // This function updates the resource allocation in GlobalTileManager. 122 // This function updates the resource allocation in GlobalTileManager.
89 void BrowserViewRenderer::TrimMemory(const int level, const bool visible) { 123 void BrowserViewRenderer::TrimMemory(const int level, const bool visible) {
(...skipping 656 matching lines...) Expand 10 before | Expand all | Expand 10 after
746 base::StringAppendF(&str, 780 base::StringAppendF(&str,
747 "overscroll_rounding_error_: %s ", 781 "overscroll_rounding_error_: %s ",
748 overscroll_rounding_error_.ToString().c_str()); 782 overscroll_rounding_error_.ToString().c_str());
749 base::StringAppendF( 783 base::StringAppendF(
750 &str, "on_new_picture_enable: %d ", on_new_picture_enable_); 784 &str, "on_new_picture_enable: %d ", on_new_picture_enable_);
751 base::StringAppendF(&str, "clear_view: %d ", clear_view_); 785 base::StringAppendF(&str, "clear_view: %d ", clear_view_);
752 return str; 786 return str;
753 } 787 }
754 788
755 } // namespace android_webview 789 } // namespace android_webview
OLDNEW
« no previous file with comments | « android_webview/browser/browser_view_renderer.h ('k') | android_webview/native/aw_contents.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698