Merge lp:~abreu-alexandre/oxide/limit-discardable-memory-19 into lp:oxide/1.9
- limit-discardable-memory-19
- Merge into 1.9
Proposed by
Alexandre Abreu
Status: | Merged |
---|---|
Merged at revision: | 1184 |
Proposed branch: | lp:~abreu-alexandre/oxide/limit-discardable-memory-19 |
Merge into: | lp:oxide/1.9 |
Diff against target: |
618 lines (+133/-153) 13 files modified
patches/limit-max-decoded-image-bytes-on-mobile.patch (+19/-62) patches/series (+3/-1) shared/app/oxide_content_main_delegate.cc (+26/-1) shared/browser/oxide_browser_process_main.cc (+39/-30) shared/browser/oxide_content_browser_client.cc (+2/-3) shared/browser/oxide_form_factor_detection_linux.cc (+13/-40) shared/browser/oxide_power_save_blocker.cc (+1/-1) shared/browser/oxide_renderer_frame_evictor.cc (+2/-1) shared/common/oxide_content_client.cc (+12/-2) shared/common/oxide_content_client.h (+2/-1) shared/common/oxide_form_factor.h (+6/-4) shared/renderer/oxide_content_renderer_client.cc (+3/-5) shared/shared.gyp (+5/-2) |
To merge this branch: | bzr merge lp:~abreu-alexandre/oxide/limit-discardable-memory-19 |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Chris Coulson | Approve | ||
Review via email: mp+272682@code.launchpad.net |
Commit message
Description of the change
Backport the limit discardable memory on mobile
To post a comment you must log in.
Revision history for this message
Chris Coulson (chrisccoulson) : | # |
review:
Approve
Preview Diff
[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1 | === renamed file 'patches/add-limit-max-decoded-image-bytes-switch.patch' => 'patches/limit-max-decoded-image-bytes-on-mobile.patch' |
2 | --- patches/add-limit-max-decoded-image-bytes-switch.patch 2015-06-25 08:52:03 +0000 |
3 | +++ patches/limit-max-decoded-image-bytes-on-mobile.patch 2015-09-29 13:54:38 +0000 |
4 | @@ -3,14 +3,10 @@ |
5 | # Author: Chris Coulson <chris.coulson@canonical.com> |
6 | |
7 | diff --git a/content/child/blink_platform_impl.cc b/content/child/blink_platform_impl.cc |
8 | +index 1fbb0a5..43d3aa0 100644 |
9 | --- a/content/child/blink_platform_impl.cc |
10 | +++ b/content/child/blink_platform_impl.cc |
11 | -@@ -5,16 +5,17 @@ |
12 | - #include "content/child/blink_platform_impl.h" |
13 | - |
14 | - #include <math.h> |
15 | - |
16 | - #include <vector> |
17 | +@@ -10,6 +10,7 @@ |
18 | |
19 | #include "base/allocator/allocator_extension.h" |
20 | #include "base/bind.h" |
21 | @@ -18,17 +14,7 @@ |
22 | #include "base/files/file_path.h" |
23 | #include "base/location.h" |
24 | #include "base/memory/scoped_ptr.h" |
25 | - #include "base/memory/singleton.h" |
26 | - #include "base/metrics/histogram.h" |
27 | - #include "base/metrics/sparse_histogram.h" |
28 | - #include "base/process/process_metrics.h" |
29 | - #include "base/rand_util.h" |
30 | -@@ -54,16 +55,17 @@ |
31 | - #include "content/child/web_discardable_memory_impl.h" |
32 | - #include "content/child/web_memory_dump_provider_adapter.h" |
33 | - #include "content/child/web_process_memory_dump_impl.h" |
34 | - #include "content/child/web_url_loader_impl.h" |
35 | - #include "content/child/web_url_request_util.h" |
36 | +@@ -59,6 +60,7 @@ |
37 | #include "content/child/websocket_bridge.h" |
38 | #include "content/child/worker_task_runner.h" |
39 | #include "content/public/common/content_client.h" |
40 | @@ -36,36 +22,19 @@ |
41 | #include "net/base/data_url.h" |
42 | #include "net/base/ip_address_number.h" |
43 | #include "net/base/net_errors.h" |
44 | - #include "net/base/net_util.h" |
45 | - #include "third_party/WebKit/public/platform/WebConvertableToTraceFormat.h" |
46 | - #include "third_party/WebKit/public/platform/WebData.h" |
47 | - #include "third_party/WebKit/public/platform/WebFloatPoint.h" |
48 | - #include "third_party/WebKit/public/platform/WebMemoryDumpProvider.h" |
49 | -@@ -1281,33 +1283,34 @@ bool BlinkPlatformImpl::memoryAllocatorW |
50 | - } |
51 | - |
52 | - blink::WebDiscardableMemory* |
53 | - BlinkPlatformImpl::allocateAndLockDiscardableMemory(size_t bytes) { |
54 | - return content::WebDiscardableMemoryImpl::CreateLockedMemory(bytes).release(); |
55 | +@@ -1336,7 +1338,10 @@ BlinkPlatformImpl::allocateAndLockDiscardableMemory(size_t bytes) { |
56 | } |
57 | |
58 | size_t BlinkPlatformImpl::maxDecodedImageBytes() { |
59 | -#if defined(OS_ANDROID) |
60 | -+ if (!base::CommandLine::ForCurrentProcess()->HasSwitch( |
61 | -+ switches::kLimitMaxDecodedImageBytes)) { |
62 | ++ if (!GetContentClient()->ShouldOptimizeForMemoryUsage()) { |
63 | + return noDecodedImageByteLimit; |
64 | + } |
65 | + |
66 | if (base::SysInfo::IsLowEndDevice()) { |
67 | // Limit image decoded size to 3M pixels on low end devices. |
68 | // 4 is maximum number of bytes per pixel. |
69 | - return 3 * 1024 * 1024 * 4; |
70 | - } |
71 | - // For other devices, limit decoded image size based on the amount of physical |
72 | - // memory. |
73 | - // In some cases all physical memory is not accessible by Chromium, as it can |
74 | - // be reserved for direct use by certain hardware. Thus, we set the limit so |
75 | - // that 1.6GB of reported physical memory on a 2GB device is enough to set the |
76 | +@@ -1350,9 +1355,6 @@ size_t BlinkPlatformImpl::maxDecodedImageBytes() { |
77 | // limit at 16M pixels, which is a desirable value since 4K*4K is a relatively |
78 | // common texture size. |
79 | return base::SysInfo::AmountOfPhysicalMemory() / 25; |
80 | @@ -75,20 +44,10 @@ |
81 | } |
82 | |
83 | uint32_t BlinkPlatformImpl::getUniqueIdForProcess() { |
84 | - // TODO(rickyz): Replace this with base::GetUniqueIdForProcess when that's |
85 | - // ready. |
86 | - return base::trace_event::TraceLog::GetInstance()->process_id(); |
87 | - } |
88 | - |
89 | diff --git a/content/public/common/content_switches.cc b/content/public/common/content_switches.cc |
90 | --- a/content/public/common/content_switches.cc |
91 | +++ b/content/public/common/content_switches.cc |
92 | -@@ -560,16 +560,19 @@ const char kInProcessGPU[] |
93 | - |
94 | - // Overrides the timeout, in seconds, that a child process waits for a |
95 | - // connection from the browser before killing itself. |
96 | - const char kIPCConnectionTimeout[] = "ipc-connection-timeout"; |
97 | - |
98 | +@@ -570,6 +570,9 @@ const char kIPCConnectionTimeout[] = "ipc-connection-timeout"; |
99 | // Specifies the flags passed to JS engine |
100 | const char kJavaScriptFlags[] = "js-flags"; |
101 | |
102 | @@ -98,29 +57,27 @@ |
103 | // Load an NPAPI plugin from the specified path. |
104 | const char kLoadPlugin[] = "load-plugin"; |
105 | |
106 | - // Logs GPU control list decisions when enforcing blacklist rules. |
107 | - const char kLogGpuControlListDecisions[] = "log-gpu-control-list-decisions"; |
108 | - |
109 | - // Sets the minimum log level. Valid values are from 0 to 3: |
110 | - // INFO = 0, WARNING = 1, LOG_ERROR = 2, LOG_FATAL = 3. |
111 | diff --git a/content/public/common/content_switches.h b/content/public/common/content_switches.h |
112 | --- a/content/public/common/content_switches.h |
113 | +++ b/content/public/common/content_switches.h |
114 | -@@ -161,16 +161,17 @@ CONTENT_EXPORT extern const char kGpuSan |
115 | - CONTENT_EXPORT extern const char kGpuStartupDialog[]; |
116 | - extern const char kGpuVendorID[]; |
117 | +@@ -164,9 +164,10 @@ extern const char kGpuVendorID[]; |
118 | CONTENT_EXPORT extern const char kHostResolverRules[]; |
119 | CONTENT_EXPORT extern const char kIgnoreCertificateErrors[]; |
120 | CONTENT_EXPORT extern const char kIgnoreGpuBlacklist[]; |
121 | - CONTENT_EXPORT extern const char kInProcessGPU[]; |
122 | +-extern const char kInProcessGPU[]; |
123 | ++CONTENT_EXPORT extern const char kInProcessGPU[]; |
124 | CONTENT_EXPORT extern const char kIPCConnectionTimeout[]; |
125 | CONTENT_EXPORT extern const char kJavaScriptFlags[]; |
126 | +CONTENT_EXPORT extern const char kLimitMaxDecodedImageBytes[]; |
127 | extern const char kLoadPlugin[]; |
128 | CONTENT_EXPORT extern const char kLogGpuControlListDecisions[]; |
129 | CONTENT_EXPORT extern const char kLoggingLevel[]; |
130 | - CONTENT_EXPORT extern const char kLogNetLog[]; |
131 | - extern const char kLogPluginMessages[]; |
132 | - CONTENT_EXPORT extern const char kMainFrameResizesAreOrientationChanges[]; |
133 | - extern const char kMaxUntiledLayerHeight[]; |
134 | - extern const char kMaxUntiledLayerWidth[]; |
135 | +@@ -200,7 +201,7 @@ CONTENT_EXPORT extern const char kReduceSecurityForTesting[]; |
136 | + CONTENT_EXPORT extern const char kReducedReferrerGranularity[]; |
137 | + CONTENT_EXPORT extern const char kRegisterPepperPlugins[]; |
138 | + CONTENT_EXPORT extern const char kRemoteDebuggingPort[]; |
139 | +-extern const char kRendererCmdPrefix[]; |
140 | ++CONTENT_EXPORT extern const char kRendererCmdPrefix[]; |
141 | + CONTENT_EXPORT extern const char kRendererProcess[]; |
142 | + CONTENT_EXPORT extern const char kRendererProcessLimit[]; |
143 | + CONTENT_EXPORT extern const char kRendererStartupDialog[]; |
144 | |
145 | === modified file 'patches/series' |
146 | --- patches/series 2015-06-29 11:25:34 +0000 |
147 | +++ patches/series 2015-09-29 13:54:38 +0000 |
148 | @@ -21,7 +21,8 @@ |
149 | store-cache-stats-at-startup.patch |
150 | export-content-switches.patch |
151 | fix-non-x11-build.patch |
152 | -add-limit-max-decoded-image-bytes-switch.patch |
153 | +add-optimize-for-memory-to-content-client.patch |
154 | +limit-max-decoded-image-bytes-on-mobile.patch |
155 | customize-gesture-fling-curve.patch |
156 | mediahub-support.patch |
157 | allow-os-override-for-gpu-manager.patch |
158 | @@ -34,3 +35,4 @@ |
159 | implement-webrtc-get-cpu-features-arm.patch |
160 | enable-optional-neon-for-skia.patch |
161 | add-suggested-filename-to-download-starting-resource-delegate.patch |
162 | +lower-limit-for-discardable-memory-on-mobile.patch |
163 | \ No newline at end of file |
164 | |
165 | === modified file 'shared/app/oxide_content_main_delegate.cc' |
166 | --- shared/app/oxide_content_main_delegate.cc 2015-06-12 07:39:38 +0000 |
167 | +++ shared/app/oxide_content_main_delegate.cc 2015-09-29 13:54:38 +0000 |
168 | @@ -1,5 +1,5 @@ |
169 | // vim:expandtab:shiftwidth=2:tabstop=2: |
170 | -// Copyright (C) 2013 Canonical Ltd. |
171 | +// Copyright (C) 2013-2015 Canonical Ltd. |
172 | |
173 | // This library is free software; you can redistribute it and/or |
174 | // modify it under the terms of the GNU Lesser General Public |
175 | @@ -35,7 +35,9 @@ |
176 | |
177 | #include "shared/browser/oxide_browser_process_main.h" |
178 | #include "shared/browser/oxide_content_browser_client.h" |
179 | +#include "shared/common/oxide_constants.h" |
180 | #include "shared/common/oxide_content_client.h" |
181 | +#include "shared/common/oxide_form_factor.h" |
182 | #include "shared/common/oxide_paths.h" |
183 | #include "shared/renderer/oxide_content_renderer_client.h" |
184 | |
185 | @@ -43,6 +45,25 @@ |
186 | |
187 | namespace oxide { |
188 | |
189 | +namespace { |
190 | + |
191 | +FormFactor FormFactorHintFromCommandLine(base::CommandLine* command_line) { |
192 | + std::string form_factor = |
193 | + command_line->GetSwitchValueASCII(switches::kFormFactor); |
194 | + if (form_factor == switches::kFormFactorDesktop) { |
195 | + return FORM_FACTOR_DESKTOP; |
196 | + } else if (form_factor == switches::kFormFactorTablet) { |
197 | + return FORM_FACTOR_TABLET; |
198 | + } else if (form_factor == switches::kFormFactorPhone) { |
199 | + return FORM_FACTOR_PHONE; |
200 | + } |
201 | + |
202 | + NOTREACHED(); |
203 | + return FORM_FACTOR_DESKTOP; |
204 | +} |
205 | + |
206 | +} |
207 | + |
208 | ContentMainDelegate::ContentMainDelegate(PlatformDelegate* delegate) |
209 | : delegate_(delegate) { |
210 | CHECK(delegate_); |
211 | @@ -55,6 +76,10 @@ |
212 | content::SetContentClient(content_client_.get()); |
213 | RegisterPathProvider(); |
214 | |
215 | + base::CommandLine* command_line = base::CommandLine::ForCurrentProcess(); |
216 | + if (command_line->HasSwitch(switches::kProcessType)) { |
217 | + InitFormFactorHint(FormFactorHintFromCommandLine(command_line)); |
218 | + } |
219 | return false; |
220 | } |
221 | |
222 | |
223 | === modified file 'shared/browser/oxide_browser_process_main.cc' |
224 | --- shared/browser/oxide_browser_process_main.cc 2015-09-10 08:31:38 +0000 |
225 | +++ shared/browser/oxide_browser_process_main.cc 2015-09-29 13:54:38 +0000 |
226 | @@ -65,10 +65,11 @@ |
227 | #include "shared/app/oxide_platform_delegate.h" |
228 | #include "shared/common/oxide_constants.h" |
229 | #include "shared/common/oxide_content_client.h" |
230 | +#include "shared/common/oxide_form_factor.h" |
231 | |
232 | #include "oxide_android_properties.h" |
233 | #include "oxide_browser_context.h" |
234 | -#include "oxide_form_factor.h" |
235 | +#include "oxide_form_factor_detection.h" |
236 | #include "oxide_message_pump.h" |
237 | #include "oxide_web_contents_unloader.h" |
238 | |
239 | @@ -328,36 +329,17 @@ |
240 | } |
241 | |
242 | void AddFormFactorSpecificCommandLineArguments() { |
243 | + if (GetFormFactorHint() == FORM_FACTOR_DESKTOP) { |
244 | + return; |
245 | + } |
246 | + |
247 | base::CommandLine* command_line = base::CommandLine::ForCurrentProcess(); |
248 | - |
249 | - FormFactor form_factor = GetFormFactorHint(); |
250 | - |
251 | - if (form_factor != FORM_FACTOR_DESKTOP) { |
252 | - command_line->AppendSwitch(switches::kEnableViewport); |
253 | - command_line->AppendSwitch(switches::kEnableViewportMeta); |
254 | - command_line->AppendSwitch(switches::kMainFrameResizesAreOrientationChanges); |
255 | - command_line->AppendSwitch(switches::kEnablePinch); |
256 | - // Note, overlay scrollbars do not work properly on desktop yet |
257 | - // see https://launchpad.net/bugs/1426567 |
258 | - command_line->AppendSwitch(switches::kEnableOverlayScrollbar); |
259 | - command_line->AppendSwitch(switches::kLimitMaxDecodedImageBytes); |
260 | - } |
261 | - |
262 | - const char* form_factor_string = nullptr; |
263 | - switch (form_factor) { |
264 | - case FORM_FACTOR_DESKTOP: |
265 | - form_factor_string = switches::kFormFactorDesktop; |
266 | - break; |
267 | - case FORM_FACTOR_TABLET: |
268 | - form_factor_string = switches::kFormFactorTablet; |
269 | - break; |
270 | - case FORM_FACTOR_PHONE: |
271 | - form_factor_string = switches::kFormFactorPhone; |
272 | - break; |
273 | - default: |
274 | - NOTREACHED(); |
275 | - } |
276 | - command_line->AppendSwitchASCII(switches::kFormFactor, form_factor_string); |
277 | + command_line->AppendSwitch(switches::kEnableViewport); |
278 | + command_line->AppendSwitch(switches::kMainFrameResizesAreOrientationChanges); |
279 | + command_line->AppendSwitch(switches::kEnablePinch); |
280 | + // Note, overlay scrollbars do not work properly on desktop yet |
281 | + // see https://launchpad.net/bugs/1426567 |
282 | + command_line->AppendSwitch(switches::kEnableOverlayScrollbar); |
283 | } |
284 | |
285 | bool IsUnsupportedProcessModel(ProcessModel process_model) { |
286 | @@ -372,6 +354,20 @@ |
287 | } |
288 | } |
289 | |
290 | +const char* GetFormFactorHintCommandLine(FormFactor form_factor) { |
291 | + switch (form_factor) { |
292 | + case FORM_FACTOR_DESKTOP: |
293 | + return switches::kFormFactorDesktop; |
294 | + case FORM_FACTOR_TABLET: |
295 | + return switches::kFormFactorTablet; |
296 | + case FORM_FACTOR_PHONE: |
297 | + return switches::kFormFactorPhone; |
298 | + } |
299 | + |
300 | + NOTREACHED(); |
301 | + return nullptr; |
302 | +} |
303 | + |
304 | } |
305 | |
306 | BrowserProcessMainImpl::BrowserProcessMainImpl() |
307 | @@ -431,6 +427,19 @@ |
308 | base::CommandLine::ForCurrentProcess()->HasSwitch( |
309 | switches::kSingleProcess)); |
310 | |
311 | + // Ideally we'd do this before calling |
312 | + // ContentMainDelegate::BasicStartupComplete, and then ContentMainDelegate |
313 | + // would call InitFormFactorHint for all process types. However, |
314 | + // DetectFormFactorHint depends on BrowserPlatformIntegration, which is |
315 | + // initialized when ContentBrowserClient is created. Perhaps we could create |
316 | + // BPI earlier? |
317 | + FormFactor form_factor = DetectFormFactorHint(); |
318 | + base::CommandLine::ForCurrentProcess() |
319 | + ->AppendSwitchASCII(switches::kFormFactor, |
320 | + GetFormFactorHintCommandLine(form_factor)); |
321 | + |
322 | + InitFormFactorHint(form_factor); |
323 | + |
324 | AddFormFactorSpecificCommandLineArguments(); |
325 | |
326 | #if defined(USE_NSS_CERTS) |
327 | |
328 | === modified file 'shared/browser/oxide_content_browser_client.cc' |
329 | --- shared/browser/oxide_content_browser_client.cc 2015-06-29 22:44:52 +0000 |
330 | +++ shared/browser/oxide_content_browser_client.cc 2015-09-29 13:54:38 +0000 |
331 | @@ -37,6 +37,7 @@ |
332 | #include "shared/browser/media/oxide_media_capture_devices_dispatcher.h" |
333 | #include "shared/common/oxide_constants.h" |
334 | #include "shared/common/oxide_content_client.h" |
335 | +#include "shared/common/oxide_form_factor.h" |
336 | |
337 | #include "oxide_access_token_store.h" |
338 | #include "oxide_android_properties.h" |
339 | @@ -44,7 +45,6 @@ |
340 | #include "oxide_browser_main_parts.h" |
341 | #include "oxide_browser_platform_integration.h" |
342 | #include "oxide_browser_process_main.h" |
343 | -#include "oxide_form_factor.h" |
344 | #include "oxide_quota_permission_context.h" |
345 | #include "oxide_render_message_filter.h" |
346 | #include "oxide_resource_dispatcher_host_delegate.h" |
347 | @@ -105,9 +105,8 @@ |
348 | // This can be called on the UI or IO thread |
349 | static const char* const kSwitchNames[] = { |
350 | switches::kEnableGoogleTalkPlugin, |
351 | + switches::kEnableMediaHubAudio, |
352 | switches::kFormFactor, |
353 | - switches::kLimitMaxDecodedImageBytes, |
354 | - switches::kEnableMediaHubAudio, |
355 | switches::kMediaHubFixedSessionDomains |
356 | }; |
357 | command_line->CopySwitchesFrom(*base::CommandLine::ForCurrentProcess(), |
358 | |
359 | === renamed file 'shared/browser/oxide_form_factor_linux.cc' => 'shared/browser/oxide_form_factor_detection_linux.cc' |
360 | --- shared/browser/oxide_form_factor_linux.cc 2015-01-21 22:58:10 +0000 |
361 | +++ shared/browser/oxide_form_factor_detection_linux.cc 2015-09-29 13:54:38 +0000 |
362 | @@ -1,5 +1,5 @@ |
363 | // vim:expandtab:shiftwidth=2:tabstop=2: |
364 | -// Copyright (C) 2013-2014 Canonical Ltd. |
365 | +// Copyright (C) 2013-2015 Canonical Ltd. |
366 | |
367 | // This library is free software; you can redistribute it and/or |
368 | // modify it under the terms of the GNU Lesser General Public |
369 | @@ -15,47 +15,20 @@ |
370 | // License along with this library; if not, write to the Free Software |
371 | // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA |
372 | |
373 | -#include "oxide_form_factor.h" |
374 | +#include "oxide_form_factor_detection.h" |
375 | |
376 | #include <algorithm> |
377 | |
378 | -#include "base/logging.h" |
379 | #include "third_party/WebKit/public/platform/WebScreenInfo.h" |
380 | |
381 | +#include "shared/common/oxide_form_factor.h" |
382 | + |
383 | #include "oxide_android_properties.h" |
384 | #include "oxide_browser_platform_integration.h" |
385 | |
386 | namespace oxide { |
387 | |
388 | -FormFactor GetFormFactorHint() { |
389 | - static bool initialized = false; |
390 | - static FormFactor form_factor = FORM_FACTOR_DESKTOP; |
391 | - |
392 | - if (initialized) { |
393 | - return form_factor; |
394 | - } |
395 | - |
396 | - const char* force = getenv("OXIDE_FORCE_FORM_FACTOR"); |
397 | - if (force) { |
398 | - initialized = true; |
399 | - if (!strcmp(force, "desktop")) { |
400 | - form_factor = FORM_FACTOR_DESKTOP; |
401 | - } else if (!strcmp(force, "tablet")) { |
402 | - form_factor = FORM_FACTOR_TABLET; |
403 | - } else if (!strcmp(force, "phone")) { |
404 | - form_factor = FORM_FACTOR_PHONE; |
405 | - } else { |
406 | - LOG(ERROR) << "Unrecognized value for OXIDE_FORCE_FORM_FACTOR"; |
407 | - initialized = false; |
408 | - } |
409 | - } |
410 | - |
411 | - if (initialized) { |
412 | - return form_factor; |
413 | - } |
414 | - |
415 | - initialized = true; |
416 | - |
417 | +FormFactor DetectFormFactorHintImpl() { |
418 | if (AndroidProperties::GetInstance()->Available()) { |
419 | // Ubuntu on phones and tablets currently uses an Android kernel and EGL |
420 | // stack. If we detect these, assume we are a phone or tablet. The screen |
421 | @@ -65,17 +38,17 @@ |
422 | BrowserPlatformIntegration::GetInstance()->GetDefaultScreenInfo()); |
423 | if (std::min(screen.rect.width / screen.deviceScaleFactor, |
424 | screen.rect.height / screen.deviceScaleFactor) >= 600) { |
425 | - form_factor = FORM_FACTOR_TABLET; |
426 | - } else { |
427 | - form_factor = FORM_FACTOR_PHONE; |
428 | + return FORM_FACTOR_TABLET; |
429 | } |
430 | - } else { |
431 | - // If this is not an Ubuntu phone or tablet, assume desktop linux for now. |
432 | - // We could be cleverer here, eg, using /sys/class/dmi/id/chassis_type |
433 | - // or something like that. But this is good enough for now |
434 | + |
435 | + return FORM_FACTOR_PHONE; |
436 | } |
437 | |
438 | - return form_factor; |
439 | + // If this is not an Ubuntu phone or tablet, assume desktop linux for now. |
440 | + // We could be cleverer here, eg, using /sys/class/dmi/id/chassis_type |
441 | + // or something like that. But this is good enough for now |
442 | + |
443 | + return FORM_FACTOR_DESKTOP; |
444 | } |
445 | |
446 | } // namespace oxide |
447 | |
448 | === modified file 'shared/browser/oxide_power_save_blocker.cc' |
449 | --- shared/browser/oxide_power_save_blocker.cc 2015-07-22 04:33:55 +0000 |
450 | +++ shared/browser/oxide_power_save_blocker.cc 2015-09-29 13:54:38 +0000 |
451 | @@ -29,11 +29,11 @@ |
452 | #include "dbus/object_path.h" |
453 | #include "dbus/object_proxy.h" |
454 | |
455 | +#include "shared/common/oxide_form_factor.h" |
456 | #include "shared/port/content/browser/power_save_blocker_oxide.h" |
457 | |
458 | #include "oxide_browser_platform_integration.h" |
459 | #include "oxide_browser_platform_integration_observer.h" |
460 | -#include "oxide_form_factor.h" |
461 | |
462 | namespace oxide { |
463 | |
464 | |
465 | === modified file 'shared/browser/oxide_renderer_frame_evictor.cc' |
466 | --- shared/browser/oxide_renderer_frame_evictor.cc 2014-06-24 00:33:34 +0000 |
467 | +++ shared/browser/oxide_renderer_frame_evictor.cc 2015-09-29 13:54:38 +0000 |
468 | @@ -23,7 +23,8 @@ |
469 | #include "base/sys_info.h" |
470 | #include "content/common/host_shared_bitmap_manager.h" |
471 | |
472 | -#include "oxide_form_factor.h" |
473 | +#include "shared/common/oxide_form_factor.h" |
474 | + |
475 | #include "oxide_renderer_frame_evictor_client.h" |
476 | |
477 | namespace oxide { |
478 | |
479 | === modified file 'shared/common/oxide_content_client.cc' |
480 | --- shared/common/oxide_content_client.cc 2015-04-09 22:20:49 +0000 |
481 | +++ shared/common/oxide_content_client.cc 2015-09-29 13:54:38 +0000 |
482 | @@ -1,5 +1,5 @@ |
483 | // vim:expandtab:shiftwidth=2:tabstop=2: |
484 | -// Copyright (C) 2013 Canonical Ltd. |
485 | +// Copyright (C) 2013-2015 Canonical Ltd. |
486 | |
487 | // This library is free software; you can redistribute it and/or |
488 | // modify it under the terms of the GNU Lesser General Public |
489 | @@ -27,6 +27,7 @@ |
490 | #include "shared/browser/oxide_content_browser_client.h" |
491 | #include "shared/renderer/oxide_content_renderer_client.h" |
492 | |
493 | +#include "oxide_form_factor.h" |
494 | #include "oxide_user_agent.h" |
495 | |
496 | namespace oxide { |
497 | @@ -55,7 +56,16 @@ |
498 | |
499 | base::RefCountedStaticMemory* ContentClient::GetDataResourceBytes( |
500 | int resource_id) const { |
501 | - return ui::ResourceBundle::GetSharedInstance().LoadDataResourceBytes(resource_id); |
502 | + return ui::ResourceBundle::GetSharedInstance().LoadDataResourceBytes( |
503 | + resource_id); |
504 | +} |
505 | + |
506 | +bool ContentClient::ShouldOptimizeForMemoryUsage() const { |
507 | + if (GetFormFactorHint() == FORM_FACTOR_DESKTOP) { |
508 | + return false; |
509 | + } |
510 | + |
511 | + return true; |
512 | } |
513 | |
514 | // static |
515 | |
516 | === modified file 'shared/common/oxide_content_client.h' |
517 | --- shared/common/oxide_content_client.h 2014-11-08 01:06:30 +0000 |
518 | +++ shared/common/oxide_content_client.h 2015-09-29 13:54:38 +0000 |
519 | @@ -1,5 +1,5 @@ |
520 | // vim:expandtab:shiftwidth=2:tabstop=2: |
521 | -// Copyright (C) 2013 Canonical Ltd. |
522 | +// Copyright (C) 2013-2015 Canonical Ltd. |
523 | |
524 | // This library is free software; you can redistribute it and/or |
525 | // modify it under the terms of the GNU Lesser General Public |
526 | @@ -47,6 +47,7 @@ |
527 | ui::ScaleFactor scale_factor) const final; |
528 | base::RefCountedStaticMemory* GetDataResourceBytes( |
529 | int resource_id) const final; |
530 | + bool ShouldOptimizeForMemoryUsage() const final; |
531 | |
532 | DISALLOW_COPY_AND_ASSIGN(ContentClient); |
533 | }; |
534 | |
535 | === renamed file 'shared/browser/oxide_form_factor.h' => 'shared/common/oxide_form_factor.h' |
536 | --- shared/browser/oxide_form_factor.h 2014-02-13 16:04:31 +0000 |
537 | +++ shared/common/oxide_form_factor.h 2015-09-29 13:54:38 +0000 |
538 | @@ -1,5 +1,5 @@ |
539 | // vim:expandtab:shiftwidth=2:tabstop=2: |
540 | -// Copyright (C) 2013 Canonical Ltd. |
541 | +// Copyright (C) 2013-2015 Canonical Ltd. |
542 | |
543 | // This library is free software; you can redistribute it and/or |
544 | // modify it under the terms of the GNU Lesser General Public |
545 | @@ -15,8 +15,8 @@ |
546 | // License along with this library; if not, write to the Free Software |
547 | // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA |
548 | |
549 | -#ifndef _OXIDE_SHARED_BROWSER_FORM_FACTOR_H_ |
550 | -#define _OXIDE_SHARED_BROWSER_FORM_FACTOR_H_ |
551 | +#ifndef _OXIDE_SHARED_COMMON_FORM_FACTOR_H_ |
552 | +#define _OXIDE_SHARED_COMMON_FORM_FACTOR_H_ |
553 | |
554 | namespace oxide { |
555 | |
556 | @@ -26,8 +26,10 @@ |
557 | FORM_FACTOR_PHONE |
558 | }; |
559 | |
560 | +void InitFormFactorHint(FormFactor form_factor); |
561 | + |
562 | FormFactor GetFormFactorHint(); |
563 | |
564 | } |
565 | |
566 | -#endif // _OXIDE_SHARED_BROWSER_FORM_FACTOR_H_ |
567 | +#endif // _OXIDE_SHARED_COMMON_FORM_FACTOR_H_ |
568 | |
569 | === modified file 'shared/renderer/oxide_content_renderer_client.cc' |
570 | --- shared/renderer/oxide_content_renderer_client.cc 2015-06-29 16:47:46 +0000 |
571 | +++ shared/renderer/oxide_content_renderer_client.cc 2015-09-29 13:54:38 +0000 |
572 | @@ -35,6 +35,7 @@ |
573 | |
574 | #include "shared/common/chrome_version.h" |
575 | #include "shared/common/oxide_constants.h" |
576 | +#include "shared/common/oxide_form_factor.h" |
577 | #include "shared/common/oxide_net_resource_provider.h" |
578 | |
579 | #include "oxide_renderer_user_agent_settings.h" |
580 | @@ -85,11 +86,8 @@ |
581 | blink::WebSettings* settings = render_view->GetWebView()->settings(); |
582 | settings->setDoubleTapToZoomEnabled(true); // XXX: Make this configurable |
583 | |
584 | - std::string form_factor = |
585 | - base::CommandLine::ForCurrentProcess()->GetSwitchValueASCII( |
586 | - switches::kFormFactor); |
587 | - if (form_factor == switches::kFormFactorTablet || |
588 | - form_factor == switches::kFormFactorPhone) { |
589 | + if (GetFormFactorHint() == FORM_FACTOR_TABLET || |
590 | + GetFormFactorHint() == FORM_FACTOR_PHONE) { |
591 | settings->setAllowCustomScrollbarInMainFrame(false); |
592 | settings->setUseWideViewport(true); |
593 | settings->setMainFrameClipsContent(false); |
594 | |
595 | === modified file 'shared/shared.gyp' |
596 | --- shared/shared.gyp 2015-07-01 09:56:23 +0000 |
597 | +++ shared/shared.gyp 2015-09-29 13:54:38 +0000 |
598 | @@ -341,8 +341,9 @@ |
599 | 'browser/oxide_event_utils.h', |
600 | 'browser/oxide_file_picker.cc', |
601 | 'browser/oxide_file_picker.h', |
602 | - 'browser/oxide_form_factor.h', |
603 | - 'browser/oxide_form_factor_linux.cc', |
604 | + 'browser/oxide_form_factor_detection.cc', |
605 | + 'browser/oxide_form_factor_detection.h', |
606 | + 'browser/oxide_form_factor_detection_linux.cc', |
607 | 'browser/oxide_gesture_provider.cc', |
608 | 'browser/oxide_gesture_provider.h', |
609 | 'browser/oxide_gpu_info_collector_linux.cc', |
610 | @@ -448,6 +449,8 @@ |
611 | 'common/oxide_export.h', |
612 | 'common/oxide_file_utils.cc', |
613 | 'common/oxide_file_utils.h', |
614 | + 'common/oxide_form_factor.cc', |
615 | + 'common/oxide_form_factor.h', |
616 | 'common/oxide_id_allocator.cc', |
617 | 'common/oxide_id_allocator.h', |
618 | 'common/oxide_message_enums.h', |