Merge lp:~mterry/oxide/mirserver-1.5 into lp:~oxide-developers/oxide/oxide.trunk

Proposed by Michael Terry
Status: Superseded
Proposed branch: lp:~mterry/oxide/mirserver-1.5
Merge into: lp:~oxide-developers/oxide/oxide.trunk
Diff against target: 1603 lines (+1010/-3) (has conflicts)
22 files modified
CHROMIUM_VERSION (+4/-0)
build/common.gypi (+15/-1)
patches/allow-os-override-for-gpu-manager.patch (+216/-0)
patches/allow-render-widget-compositor-settings-override.patch (+106/-0)
patches/bug1423531.patch (+202/-0)
patches/port/gl_implementation.patch (+49/-1)
patches/series (+7/-0)
patches/support-native-popup-menus.patch (+104/-0)
patches/use-android-style-overlay-scrollbars.patch (+76/-0)
qt/VERSION (+4/-0)
qt/core/browser/oxide_qt_browser_startup.cc (+13/-0)
qt/core/browser/oxide_qt_browser_startup.h (+5/-0)
qt/core/glue/oxide_qt_init.cc (+5/-0)
qt/quick/CMakeLists.txt (+8/-0)
qt/quick/api/oxideqquickwebframe.cc (+19/-0)
qt/quick/api/oxideqquickwebview.cc (+10/-0)
qt/renderer/renderer.gyp (+6/-1)
shared/browser/compositor/oxide_compositor_utils.cc (+107/-0)
shared/browser/oxide_browser_process_main.cc (+8/-0)
shared/browser/oxide_content_browser_client.cc (+15/-0)
shared/browser/oxide_web_frame.cc (+7/-0)
shared/renderer/oxide_content_renderer_client.cc (+24/-0)
Text conflict in CHROMIUM_VERSION
Text conflict in build/common.gypi
Text conflict in patches/allow-os-override-for-gpu-manager.patch
Text conflict in patches/allow-render-widget-compositor-settings-override.patch
Text conflict in patches/port/gl_implementation.patch
Text conflict in patches/series
Text conflict in patches/support-native-popup-menus.patch
Text conflict in patches/use-android-style-overlay-scrollbars.patch
Text conflict in qt/VERSION
Text conflict in qt/core/browser/oxide_qt_browser_startup.cc
Text conflict in qt/core/browser/oxide_qt_browser_startup.h
Text conflict in qt/core/glue/oxide_qt_init.cc
Text conflict in qt/quick/CMakeLists.txt
Text conflict in qt/quick/api/oxideqquickwebframe.cc
Text conflict in qt/quick/api/oxideqquickwebview.cc
Text conflict in qt/renderer/renderer.gyp
Text conflict in shared/browser/compositor/oxide_compositor_utils.cc
Text conflict in shared/browser/oxide_browser_process_main.cc
Text conflict in shared/browser/oxide_content_browser_client.cc
Text conflict in shared/browser/oxide_web_frame.cc
Text conflict in shared/renderer/oxide_content_renderer_client.cc
To merge this branch: bzr merge lp:~mterry/oxide/mirserver-1.5
Reviewer Review Type Date Requested Status
Chris Coulson Pending
Review via email: mp+255818@code.launchpad.net

This proposal has been superseded by a proposal from 2015-04-10.

Commit message

Recognize "mirserver" as a valid ubuntu platform type, and use the GLES2 implementation in that case.

Description of the change

Recognize "mirserver" as a valid ubuntu platform type, and use the GLES2 implementation in that case.

Same fix as https://code.launchpad.net/~mterry/oxide/mirserver/+merge/255128 but for 1.5

To post a comment you must log in.

Unmerged revisions

974. By Michael Terry

Support mirserver as a QPA platform, to fix a crash in the wizard

973. By Chris Coulson

Automatically bump qt revision to 1.5.7

972. By Chris Coulson

LP: #1431484

971. By Chris Coulson

Bump Chromium rev to 41.0.2272.118

970. By Chris Coulson

Bump Chromium rev to 41.0.2272.89

969. By Chris Coulson

r908 fixed builds with Qt5.4 but broke builds with < Qt5.3. However, this wasn't picked up because those builds were inadvertently fixed again by r949 which unfortunately landed after 1.5 was branched. Backport r949 from trunk, effectively dropping support for < Qt5.2 but fixing the build with Qt5.2 (trusty)

968. By Chris Coulson

Disable webcore debug symbols and link with --no-keep-files-mapped on native x86 builds because of linker OOM

967. By Chris Coulson

Automatically bump qt revision to 1.5.6

966. By Chris Coulson

Backport commit 7431bb2983db683dcc4556e1918556254c3d5589 from upstream chromium branch 42 and corresponding unit tests

965. By Chris Coulson

Backport revisions from trunk to fix the scrollbar styling on mobile

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'CHROMIUM_VERSION'
2--- CHROMIUM_VERSION 2015-04-06 21:26:49 +0000
3+++ CHROMIUM_VERSION 2015-04-10 12:47:19 +0000
4@@ -1,1 +1,5 @@
5+<<<<<<< TREE
6 43.0.2357.2
7+=======
8+41.0.2272.118
9+>>>>>>> MERGE-SOURCE
10
11=== modified file 'build/common.gypi'
12--- build/common.gypi 2015-03-05 16:07:04 +0000
13+++ build/common.gypi 2015-04-10 12:47:19 +0000
14@@ -51,7 +51,11 @@
15 # Ubuntu-specific?
16 'arm_float_abi': 'hard',
17 }],
18+<<<<<<< TREE
19 ['(host_arch=="arm" or host_arch=="ia32") and component=="static_library"', {
20+=======
21+ ['host_arch=="arm" or host_arch=="ia32"', {
22+>>>>>>> MERGE-SOURCE
23 # This is desparate - we're trying to avoid linker OOM on native ARM
24 # and x86 builds. This is unnecessary on ARM cross builds, hence the
25 # test for "host_arch".
26@@ -74,10 +78,20 @@
27 '-Wl,--stats',
28 ],
29 }],
30+<<<<<<< TREE
31 ['(host_arch=="arm" or host_arch=="ia32") and component=="static_library"', {
32+=======
33+ ['host_arch=="arm" or host_arch=="ia32"', {
34+>>>>>>> MERGE-SOURCE
35 'ldflags': [
36 # Try to work around linker OOM - we only want these on native
37- # ARM and x86 builds though, hence the test for "host_arch"
38+<<<<<<< TREE
39+ # ARM and x86 builds though, hence the test for "host_arch"
40+=======
41+ # ARM and x86 builds though, hence the test for "host_arch"
42+ '-Wl,--no-map-whole-files',
43+ '-Wl,--no-keep-memory',
44+>>>>>>> MERGE-SOURCE
45 '-Wl,--no-keep-files-mapped',
46 ],
47 }],
48
49=== modified file 'patches/allow-os-override-for-gpu-manager.patch'
50--- patches/allow-os-override-for-gpu-manager.patch 2015-04-03 21:58:38 +0000
51+++ patches/allow-os-override-for-gpu-manager.patch 2015-04-10 12:47:19 +0000
52@@ -52,6 +52,7 @@
53 NotifyGpuInfoUpdate();
54 }
55
56+<<<<<<< TREE
57 @@ -917,32 +918,37 @@ GpuDataManagerImplPrivate::GpuDataManage
58 use_warp_(false),
59 card_blacklisted_(false),
60@@ -161,6 +162,117 @@
61
62 #endif // CONTENT_BROWSER_GPU_GPU_DATA_MANAGER_IMPL_PRIVATE_H_
63
64+=======
65+@@ -905,32 +906,37 @@ GpuDataManagerImplPrivate::GpuDataManage
66+ use_warp_(false),
67+ card_blacklisted_(false),
68+ update_histograms_(true),
69+ window_count_(0),
70+ domain_blocking_enabled_(true),
71+ owner_(owner),
72+ display_count_(0),
73+ gpu_process_accessible_(true),
74+- finalized_(false) {
75++ finalized_(false),
76++ os_type_override_(gpu::GpuControlList::kOsAny) {
77+ DCHECK(owner_);
78+ const base::CommandLine* command_line =
79+ base::CommandLine::ForCurrentProcess();
80+ if (command_line->HasSwitch(switches::kDisableGpu))
81+ DisableHardwareAcceleration();
82+
83+ #if defined(OS_MACOSX)
84+ CGGetActiveDisplayList (0, NULL, &display_count_);
85+ CGDisplayRegisterReconfigurationCallback(DisplayReconfigCallback, owner_);
86+ #endif // OS_MACOSX
87+
88+ // For testing only.
89+ if (command_line->HasSwitch(switches::kDisableDomainBlockingFor3DAPIs)) {
90+ domain_blocking_enabled_ = false;
91+ }
92++
93++ os_type_override_ =
94++ GetContentClient()->browser()->GetOsTypeOverrideForGpuDataManager(
95++ &os_version_override_);
96+ }
97+
98+ GpuDataManagerImplPrivate::~GpuDataManagerImplPrivate() {
99+ #if defined(OS_MACOSX)
100+ CGDisplayRemoveReconfigurationCallback(DisplayReconfigCallback, owner_);
101+ #endif
102+ }
103+
104+@@ -942,25 +948,27 @@ void GpuDataManagerImplPrivate::Initiali
105+ base::CommandLine::ForCurrentProcess()->HasSwitch(
106+ switches::kLogGpuControlListDecisions);
107+
108+ if (!gpu_blacklist_json.empty()) {
109+ gpu_blacklist_.reset(gpu::GpuBlacklist::Create());
110+ if (log_gpu_control_list_decisions)
111+ gpu_blacklist_->enable_control_list_logging("gpu_blacklist");
112+ bool success = gpu_blacklist_->LoadList(
113+- gpu_blacklist_json, gpu::GpuControlList::kCurrentOsOnly);
114++ gpu_blacklist_json, gpu::GpuControlList::kCurrentOsOnly,
115++ os_type_override_);
116+ DCHECK(success);
117+ }
118+ if (!gpu_driver_bug_list_json.empty()) {
119+ gpu_driver_bug_list_.reset(gpu::GpuDriverBugList::Create());
120+ if (log_gpu_control_list_decisions)
121+ gpu_driver_bug_list_->enable_control_list_logging("gpu_driver_bug_list");
122+ bool success = gpu_driver_bug_list_->LoadList(
123+- gpu_driver_bug_list_json, gpu::GpuControlList::kCurrentOsOnly);
124++ gpu_driver_bug_list_json, gpu::GpuControlList::kCurrentOsOnly,
125++ os_type_override_);
126+ DCHECK(success);
127+ }
128+
129+ gpu_info_ = gpu_info;
130+ UpdateGpuInfo(gpu_info);
131+ UpdateGpuSwitchingManager(gpu_info);
132+ UpdatePreliminaryBlacklistedFeatures();
133+ }
134+diff --git a/content/browser/gpu/gpu_data_manager_impl_private.h b/content/browser/gpu/gpu_data_manager_impl_private.h
135+--- a/content/browser/gpu/gpu_data_manager_impl_private.h
136++++ b/content/browser/gpu/gpu_data_manager_impl_private.h
137+@@ -11,16 +11,17 @@
138+ #include <string>
139+ #include <vector>
140+
141+ #include "base/memory/ref_counted.h"
142+ #include "base/memory/singleton.h"
143+ #include "base/observer_list_threadsafe.h"
144+ #include "content/browser/gpu/gpu_data_manager_impl.h"
145+ #include "gpu/config/gpu_blacklist.h"
146++#include "gpu/config/gpu_control_list.h"
147+ #include "gpu/config/gpu_driver_bug_list.h"
148+
149+ namespace base {
150+ class CommandLine;
151+ }
152+
153+ namespace content {
154+
155+@@ -265,15 +266,18 @@ class CONTENT_EXPORT GpuDataManagerImplP
156+
157+ unsigned int display_count_;
158+
159+ bool gpu_process_accessible_;
160+
161+ // True if all future Initialize calls should be ignored.
162+ bool finalized_;
163+
164++ gpu::GpuControlList::OsType os_type_override_;
165++ std::string os_version_override_;
166++
167+ DISALLOW_COPY_AND_ASSIGN(GpuDataManagerImplPrivate);
168+ };
169+
170+ } // namespace content
171+
172+ #endif // CONTENT_BROWSER_GPU_GPU_DATA_MANAGER_IMPL_PRIVATE_H_
173+
174+>>>>>>> MERGE-SOURCE
175 diff --git a/content/public/browser/content_browser_client.cc b/content/public/browser/content_browser_client.cc
176 --- a/content/public/browser/content_browser_client.cc
177 +++ b/content/public/browser/content_browser_client.cc
178@@ -218,6 +330,7 @@
179 } // namespace content
180
181 #endif // CONTENT_PUBLIC_BROWSER_CONTENT_BROWSER_CLIENT_H_
182+<<<<<<< TREE
183 diff --git a/gpu/config/gpu_control_list.cc b/gpu/config/gpu_control_list.cc
184 --- a/gpu/config/gpu_control_list.cc
185 +++ b/gpu/config/gpu_control_list.cc
186@@ -319,3 +432,106 @@
187 std::string version_;
188 std::vector<ScopedGpuControlListEntry> entries_;
189
190+=======
191+diff --git a/gpu/config/gpu_control_list.cc b/gpu/config/gpu_control_list.cc
192+--- a/gpu/config/gpu_control_list.cc
193++++ b/gpu/config/gpu_control_list.cc
194+@@ -1327,30 +1327,32 @@ GpuControlList::GpuControlList()
195+ }
196+
197+ GpuControlList::~GpuControlList() {
198+ Clear();
199+ }
200+
201+ bool GpuControlList::LoadList(
202+ const std::string& json_context,
203+- GpuControlList::OsFilter os_filter) {
204++ GpuControlList::OsFilter os_filter,
205++ GpuControlList::OsType os_override) {
206+ scoped_ptr<base::Value> root;
207+ root.reset(base::JSONReader::Read(json_context));
208+ if (root.get() == NULL || !root->IsType(base::Value::TYPE_DICTIONARY))
209+ return false;
210+
211+ base::DictionaryValue* root_dictionary =
212+ static_cast<base::DictionaryValue*>(root.get());
213+ DCHECK(root_dictionary);
214+- return LoadList(*root_dictionary, os_filter);
215++ return LoadList(*root_dictionary, os_filter, os_override);
216+ }
217+
218+ bool GpuControlList::LoadList(const base::DictionaryValue& parsed_json,
219+- GpuControlList::OsFilter os_filter) {
220++ GpuControlList::OsFilter os_filter,
221++ GpuControlList::OsType os_override) {
222+ std::vector<ScopedGpuControlListEntry> entries;
223+
224+ parsed_json.GetString("version", &version_);
225+ std::vector<std::string> pieces;
226+ if (!ProcessVersionString(version_, '.', &pieces))
227+ return false;
228+
229+ const base::ListValue* list = NULL;
230+@@ -1368,17 +1370,19 @@ bool GpuControlList::LoadList(const base
231+ if (entry.get() == NULL)
232+ return false;
233+ if (entry->id() > max_entry_id)
234+ max_entry_id = entry->id();
235+ entries.push_back(entry);
236+ }
237+
238+ Clear();
239+- OsType my_os = GetOsType();
240++ OsType my_os = os_override;
241++ if (my_os == kOsAny)
242++ my_os = GetOsType();
243+ for (size_t i = 0; i < entries.size(); ++i) {
244+ OsType entry_os = entries[i]->GetOsType();
245+ if (os_filter == GpuControlList::kAllOs ||
246+ entry_os == kOsAny || entry_os == my_os)
247+ entries_.push_back(entries[i]);
248+ }
249+ max_entry_id_ = max_entry_id;
250+ return true;
251+diff --git a/gpu/config/gpu_control_list.h b/gpu/config/gpu_control_list.h
252+--- a/gpu/config/gpu_control_list.h
253++++ b/gpu/config/gpu_control_list.h
254+@@ -40,17 +40,17 @@ class GPU_EXPORT GpuControlList {
255+ kAllOs
256+ };
257+
258+ GpuControlList();
259+ virtual ~GpuControlList();
260+
261+ // Loads control list information from a json file.
262+ // If failed, the current GpuControlList is un-touched.
263+- bool LoadList(const std::string& json_context, OsFilter os_filter);
264++ bool LoadList(const std::string& json_context, OsFilter os_filter, OsType os_override = kOsAny);
265+
266+ // Collects system information and combines them with gpu_info and control
267+ // list information to decide which entries are applied to the current
268+ // system and returns the union of features specified in each entry.
269+ // If os is kOsAny, use the current OS; if os_version is empty, use the
270+ // current OS version.
271+ std::set<int> MakeDecision(
272+ OsType os, std::string os_version, const GPUInfo& gpu_info);
273+@@ -451,17 +451,17 @@ class GPU_EXPORT GpuControlList {
274+ scoped_ptr<BoolInfo> direct_rendering_info_;
275+ std::set<int> features_;
276+ std::vector<ScopedGpuControlListEntry> exceptions_;
277+ };
278+
279+ // Gets the current OS type.
280+ static OsType GetOsType();
281+
282+- bool LoadList(const base::DictionaryValue& parsed_json, OsFilter os_filter);
283++ bool LoadList(const base::DictionaryValue& parsed_json, OsFilter os_filter, OsType os_override);
284+
285+ void Clear();
286+
287+ static NumericOp StringToNumericOp(const std::string& op);
288+
289+ std::string version_;
290+ std::vector<ScopedGpuControlListEntry> entries_;
291+
292+>>>>>>> MERGE-SOURCE
293
294=== modified file 'patches/allow-render-widget-compositor-settings-override.patch'
295--- patches/allow-render-widget-compositor-settings-override.patch 2015-04-03 21:58:38 +0000
296+++ patches/allow-render-widget-compositor-settings-override.patch 2015-04-10 12:47:19 +0000
297@@ -1,3 +1,4 @@
298+<<<<<<< TREE
299 # Description: Allow the embedder to override the renderer compositor
300 # settings
301 # Author: Chris Coulson <chris.coulson@canonical.com>
302@@ -101,3 +102,108 @@
303 } else {
304 layer_tree_host_ = cc::LayerTreeHost::CreateSingleThreaded(
305 this, this, shared_bitmap_manager, gpu_memory_buffer_manager,
306+=======
307+# Description: Allow the embedder to override the renderer compositor
308+# settings
309+# Author: Chris Coulson <chris.coulson@canonical.com>
310+
311+diff --git a/content/public/renderer/content_renderer_client.cc b/content/public/renderer/content_renderer_client.cc
312+--- a/content/public/renderer/content_renderer_client.cc
313++++ b/content/public/renderer/content_renderer_client.cc
314+@@ -216,9 +216,12 @@ std::string ContentRendererClient::GetUs
315+ blink::WebMediaPlayer* ContentRendererClient::OverrideWebMediaPlayer(
316+ blink::WebFrame* frame,
317+ blink::WebMediaPlayerClient* client,
318+ base::WeakPtr<media::WebMediaPlayerDelegate> delegate,
319+ media::MediaLog* media_log) {
320+ return nullptr;
321+ }
322+
323++void ContentRendererClient::OverrideCompositorSettings(
324++ cc::LayerTreeSettings* settings) {}
325++
326+ } // namespace content
327+diff --git a/content/public/renderer/content_renderer_client.h b/content/public/renderer/content_renderer_client.h
328+--- a/content/public/renderer/content_renderer_client.h
329++++ b/content/public/renderer/content_renderer_client.h
330+@@ -49,16 +49,20 @@ class WebSpeechSynthesizer;
331+ class WebSpeechSynthesizerClient;
332+ class WebThemeEngine;
333+ class WebURLRequest;
334+ class WebWorkerPermissionClientProxy;
335+ struct WebPluginParams;
336+ struct WebURLError;
337+ }
338+
339++namespace cc {
340++class LayerTreeSettings;
341++}
342++
343+ namespace media {
344+ class MediaLog;
345+ class RendererFactory;
346+ class WebMediaPlayerDelegate;
347+ struct KeySystemInfo;
348+ }
349+
350+ namespace content {
351+@@ -301,13 +305,16 @@ class CONTENT_EXPORT ContentRendererClie
352+ virtual std::string GetUserAgentOverrideForURL(const GURL& url);
353+
354+ // Allow overriding default media player
355+ virtual blink::WebMediaPlayer* OverrideWebMediaPlayer(
356+ blink::WebFrame* frame,
357+ blink::WebMediaPlayerClient* client,
358+ base::WeakPtr<media::WebMediaPlayerDelegate> delegate,
359+ media::MediaLog* media_log);
360++
361++ // Allow overriding the renderer compositor settings
362++ virtual void OverrideCompositorSettings(cc::LayerTreeSettings* settings);
363+ };
364+
365+ } // namespace content
366+
367+ #endif // CONTENT_PUBLIC_RENDERER_CONTENT_RENDERER_CLIENT_H_
368+diff --git a/content/renderer/gpu/render_widget_compositor.cc b/content/renderer/gpu/render_widget_compositor.cc
369+--- a/content/renderer/gpu/render_widget_compositor.cc
370++++ b/content/renderer/gpu/render_widget_compositor.cc
371+@@ -26,17 +26,19 @@
372+ #include "cc/output/begin_frame_args.h"
373+ #include "cc/output/copy_output_request.h"
374+ #include "cc/output/copy_output_result.h"
375+ #include "cc/resources/single_release_callback.h"
376+ #include "cc/scheduler/begin_frame_source.h"
377+ #include "cc/trees/layer_tree_host.h"
378+ #include "content/common/content_switches_internal.h"
379+ #include "content/common/gpu/client/context_provider_command_buffer.h"
380++#include "content/public/common/content_client.h"
381+ #include "content/public/common/content_switches.h"
382++#include "content/public/renderer/content_renderer_client.h"
383+ #include "content/renderer/input/input_handler_manager.h"
384+ #include "content/renderer/scheduler/renderer_scheduler.h"
385+ #include "gpu/command_buffer/client/gles2_interface.h"
386+ #include "third_party/WebKit/public/platform/WebCompositeAndReadbackAsyncCallback.h"
387+ #include "third_party/WebKit/public/platform/WebSelectionBound.h"
388+ #include "third_party/WebKit/public/platform/WebSize.h"
389+ #include "third_party/WebKit/public/web/WebKit.h"
390+ #include "third_party/WebKit/public/web/WebWidget.h"
391+@@ -424,16 +426,18 @@ void RenderWidgetCompositor::Initialize(
392+ compositor_deps_->GetGpuMemoryBufferManager();
393+
394+ scoped_ptr<cc::BeginFrameSource> external_begin_frame_source;
395+ if (settings.use_external_begin_frame_source) {
396+ external_begin_frame_source =
397+ compositor_deps_->CreateExternalBeginFrameSource(widget_->routing_id());
398+ }
399+
400++ GetContentClient()->renderer()->OverrideCompositorSettings(&settings);
401++
402+ if (compositor_thread_task_runner.get()) {
403+ layer_tree_host_ = cc::LayerTreeHost::CreateThreaded(
404+ this, shared_bitmap_manager, gpu_memory_buffer_manager, settings,
405+ main_thread_compositor_task_runner, compositor_thread_task_runner,
406+ external_begin_frame_source.Pass());
407+ } else {
408+ layer_tree_host_ = cc::LayerTreeHost::CreateSingleThreaded(
409+ this, this, shared_bitmap_manager, gpu_memory_buffer_manager, settings,
410+>>>>>>> MERGE-SOURCE
411
412=== added file 'patches/bug1423531.patch'
413--- patches/bug1423531.patch 1970-01-01 00:00:00 +0000
414+++ patches/bug1423531.patch 2015-04-10 12:47:19 +0000
415@@ -0,0 +1,202 @@
416+# Description: backport commit 7431bb2983db683dcc4556e1918556254c3d5589
417+# from the 42 branch to fix https://launchpad.net/bugs/1423531
418+# Author: Olivier Tilloy <olivier.tilloy@canonical.com>
419+
420+diff --git a/chrome/browser/ui/zoom/zoom_controller_browsertest.cc b/chrome/browser/ui/zoom/zoom_controller_browsertest.cc
421+--- a/chrome/browser/ui/zoom/zoom_controller_browsertest.cc
422++++ b/chrome/browser/ui/zoom/zoom_controller_browsertest.cc
423+@@ -8,6 +8,7 @@
424+ #include "base/process/kill.h"
425+ #include "chrome/browser/profiles/profile.h"
426+ #include "chrome/browser/ui/browser.h"
427++#include "chrome/browser/ui/browser_commands.h"
428+ #include "chrome/browser/ui/tabs/tab_strip_model.h"
429+ #include "chrome/browser/ui/webui/signin/login_ui_test_utils.h"
430+ #include "chrome/browser/ui/zoom/chrome_zoom_level_prefs.h"
431+@@ -140,6 +141,57 @@
432+ EXPECT_FLOAT_EQ(new_zoom_level, zoom_controller->GetZoomLevel());
433+ }
434+
435++IN_PROC_BROWSER_TEST_F(ZoomControllerBrowserTest,
436++ ErrorPagesCanZoomAfterTabRestore) {
437++ // This url is meant to cause a network error page to be loaded.
438++ // Tests can't reach the network, so this test should continue
439++ // to work even if the domain listed is someday registered.
440++ GURL url("http://kjfhkjsdf.com");
441++
442++ TabStripModel* tab_strip = browser()->tab_strip_model();
443++ ASSERT_TRUE(tab_strip);
444++
445++ ui_test_utils::NavigateToURLWithDisposition(
446++ browser(), url, NEW_FOREGROUND_TAB,
447++ ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION);
448++ {
449++ content::WebContents* web_contents = tab_strip->GetActiveWebContents();
450++
451++ EXPECT_EQ(
452++ content::PAGE_TYPE_ERROR,
453++ web_contents->GetController().GetLastCommittedEntry()->GetPageType());
454++
455++ content::WebContentsDestroyedWatcher destroyed_watcher(web_contents);
456++ tab_strip->CloseWebContentsAt(tab_strip->active_index(),
457++ TabStripModel::CLOSE_CREATE_HISTORICAL_TAB);
458++ destroyed_watcher.Wait();
459++ }
460++ EXPECT_EQ(1, tab_strip->count());
461++
462++ content::WebContentsAddedObserver new_web_contents_observer;
463++ chrome::RestoreTab(browser());
464++ content::WebContents* web_contents =
465++ new_web_contents_observer.GetWebContents();
466++ content::WaitForLoadStop(web_contents);
467++
468++ EXPECT_EQ(2, tab_strip->count());
469++
470++ EXPECT_EQ(
471++ content::PAGE_TYPE_ERROR,
472++ web_contents->GetController().GetLastCommittedEntry()->GetPageType());
473++
474++ ZoomController* zoom_controller =
475++ ZoomController::FromWebContents(web_contents);
476++
477++ double old_zoom_level = zoom_controller->GetZoomLevel();
478++ double new_zoom_level = old_zoom_level + 0.5;
479++
480++ // The following attempt to change the zoom level for an error page should
481++ // fail.
482++ zoom_controller->SetZoomLevel(new_zoom_level);
483++ EXPECT_FLOAT_EQ(new_zoom_level, zoom_controller->GetZoomLevel());
484++}
485++
486+ IN_PROC_BROWSER_TEST_F(ZoomControllerBrowserTest, Observe) {
487+ content::WebContents* web_contents =
488+ browser()->tab_strip_model()->GetActiveWebContents();
489+diff --git a/content/browser/frame_host/navigation_controller_impl.cc b/content/browser/frame_host/navigation_controller_impl.cc
490+--- a/content/browser/frame_host/navigation_controller_impl.cc
491++++ b/content/browser/frame_host/navigation_controller_impl.cc
492+@@ -1050,10 +1050,6 @@
493+ pending_entry_->site_instance() == rfh->GetSiteInstance())) {
494+ new_entry = new NavigationEntryImpl(*pending_entry_);
495+
496+- // Don't use the page type from the pending entry. Some interstitial page
497+- // may have set the type to interstitial. Once we commit, however, the page
498+- // type must always be normal.
499+- new_entry->set_page_type(PAGE_TYPE_NORMAL);
500+ update_virtual_url = new_entry->update_virtual_url_with_url();
501+ } else {
502+ new_entry = new NavigationEntryImpl;
503+@@ -1074,8 +1070,12 @@
504+ update_virtual_url = needs_update;
505+ }
506+
507+- if (params.url_is_unreachable)
508+- new_entry->set_page_type(PAGE_TYPE_ERROR);
509++ // Don't use the page type from the pending entry. Some interstitial page
510++ // may have set the type to interstitial. Once we commit, however, the page
511++ // type must always be normal or error.
512++ new_entry->set_page_type(params.url_is_unreachable ? PAGE_TYPE_ERROR
513++ : PAGE_TYPE_NORMAL);
514++
515+ new_entry->SetURL(params.url);
516+ if (update_virtual_url)
517+ UpdateVirtualURLToURL(new_entry, params.url);
518+@@ -1126,6 +1126,8 @@
519+ NavigationEntryImpl* entry = entries_[entry_index].get();
520+
521+ // The URL may have changed due to redirects.
522++ entry->set_page_type(params.url_is_unreachable ? PAGE_TYPE_ERROR
523++ : PAGE_TYPE_NORMAL);
524+ entry->SetURL(params.url);
525+ entry->SetReferrer(params.referrer);
526+ if (entry->update_virtual_url_with_url())
527+@@ -1178,6 +1180,8 @@
528+ existing_entry->set_unique_id(pending_entry_->GetUniqueID());
529+
530+ // The URL may have changed due to redirects.
531++ existing_entry->set_page_type(params.url_is_unreachable ? PAGE_TYPE_ERROR
532++ : PAGE_TYPE_NORMAL);
533+ if (existing_entry->update_virtual_url_with_url())
534+ UpdateVirtualURLToURL(existing_entry, params.url);
535+ existing_entry->SetURL(params.url);
536+@@ -1204,6 +1208,8 @@
537+ // entry and it will be the same page as the new navigation (minus the
538+ // reference fragments, of course). We'll update the URL of the existing
539+ // entry without pruning the forward history.
540++ existing_entry->set_page_type(params.url_is_unreachable ? PAGE_TYPE_ERROR
541++ : PAGE_TYPE_NORMAL);
542+ existing_entry->SetURL(params.url);
543+ if (existing_entry->update_virtual_url_with_url())
544+ UpdateVirtualURLToURL(existing_entry, params.url);
545+diff --git a/content/browser/frame_host/navigation_controller_impl_unittest.cc b/content/browser/frame_host/navigation_controller_impl_unittest.cc
546+--- a/content/browser/frame_host/navigation_controller_impl_unittest.cc
547++++ b/content/browser/frame_host/navigation_controller_impl_unittest.cc
548+@@ -28,6 +28,7 @@
549+ #include "content/public/browser/web_contents_observer.h"
550+ #include "content/public/common/content_switches.h"
551+ #include "content/public/common/page_state.h"
552++#include "content/public/common/page_type.h"
553+ #include "content/public/common/url_constants.h"
554+ #include "content/public/test/mock_render_process_host.h"
555+ #include "content/public/test/test_notification_tracker.h"
556+@@ -4456,4 +4457,61 @@
557+ EXPECT_EQ(0, delegate->repost_form_warning_count());
558+ }
559+
560++TEST_F(NavigationControllerTest, UnreachableURLGivesErrorPage) {
561++ GURL url("http://foo");
562++ FrameHostMsg_DidCommitProvisionalLoad_Params params;
563++ params.page_id = 1;
564++ params.url = url;
565++ params.transition = ui::PAGE_TRANSITION_LINK;
566++ params.gesture = NavigationGestureUser;
567++ params.page_state = PageState::CreateFromURL(url);
568++ params.was_within_same_page = false;
569++ params.is_post = true;
570++ params.post_id = 2;
571++ params.url_is_unreachable = true;
572++ // Navigate to new page
573++ {
574++ LoadCommittedDetails details;
575++ controller_impl().RendererDidNavigate(main_test_rfh(), params, &details);
576++ EXPECT_EQ(PAGE_TYPE_ERROR,
577++ controller_impl().GetLastCommittedEntry()->GetPageType());
578++ EXPECT_EQ(NAVIGATION_TYPE_NEW_PAGE, details.type);
579++ }
580++
581++ // Navigate to existing page.
582++ {
583++ LoadCommittedDetails details;
584++ controller_impl().RendererDidNavigate(main_test_rfh(), params, &details);
585++ EXPECT_EQ(PAGE_TYPE_ERROR,
586++ controller_impl().GetLastCommittedEntry()->GetPageType());
587++ EXPECT_EQ(NAVIGATION_TYPE_EXISTING_PAGE, details.type);
588++ }
589++
590++ // Navigate to same page.
591++ // Note: The call to LoadURL() creates a pending entry in order to trigger the
592++ // same-page transition.
593++ controller_impl().LoadURL(
594++ url, Referrer(), ui::PAGE_TRANSITION_TYPED, std::string());
595++ params.transition = ui::PAGE_TRANSITION_TYPED;
596++ {
597++ LoadCommittedDetails details;
598++ controller_impl().RendererDidNavigate(main_test_rfh(), params, &details);
599++ EXPECT_EQ(PAGE_TYPE_ERROR,
600++ controller_impl().GetLastCommittedEntry()->GetPageType());
601++ EXPECT_EQ(NAVIGATION_TYPE_SAME_PAGE, details.type);
602++ }
603++
604++ // Navigate in page.
605++ params.url = GURL("http://foo#foo");
606++ params.transition = ui::PAGE_TRANSITION_LINK;
607++ params.was_within_same_page = true;
608++ {
609++ LoadCommittedDetails details;
610++ controller_impl().RendererDidNavigate(main_test_rfh(), params, &details);
611++ EXPECT_EQ(PAGE_TYPE_ERROR,
612++ controller_impl().GetLastCommittedEntry()->GetPageType());
613++ EXPECT_EQ(NAVIGATION_TYPE_IN_PAGE, details.type);
614++ }
615++}
616++
617+ } // namespace content
618
619=== modified file 'patches/port/gl_implementation.patch'
620--- patches/port/gl_implementation.patch 2015-03-26 09:58:06 +0000
621+++ patches/port/gl_implementation.patch 2015-04-10 12:47:19 +0000
622@@ -102,11 +102,28 @@
623 'gl_context_stub.h',
624 'gl_context_stub_with_extensions.cc',
625 'gl_context_stub_with_extensions.h',
626+<<<<<<< TREE
627 'gl_context_win.cc',
628 'gl_context_x11.cc',
629 'gl_enums.cc',
630 'gl_enums.h',
631 @@ -81,32 +82,32 @@
632+=======
633+- 'gl_context_win.cc',
634+- 'gl_context_x11.cc',
635++ #'gl_context_win.cc',
636++ #'gl_context_x11.cc',
637+ 'gl_export.h',
638+ 'gl_fence.cc',
639+ 'gl_fence.h',
640+ 'gl_fence_arb.cc',
641+ 'gl_fence_arb.h',
642+ 'gl_fence_nv.cc',
643+ 'gl_fence_nv.h',
644+ 'gl_gl_api_implementation.cc',
645+@@ -81,52 +82,57 @@
646+ 'gl_image_ref_counted_memory.h',
647+>>>>>>> MERGE-SOURCE
648 'gl_image_shared_memory.cc',
649 'gl_image_shared_memory.h',
650 'gl_image_stub.cc',
651@@ -150,10 +167,16 @@
652 'scoped_make_current.h',
653 'sync_control_vsync_provider.cc',
654 'sync_control_vsync_provider.h',
655+<<<<<<< TREE
656+=======
657+ '<(gl_binding_output_dir)/gl_bindings_autogen_osmesa.cc',
658+ '<(gl_binding_output_dir)/gl_bindings_autogen_osmesa.h',
659+>>>>>>> MERGE-SOURCE
660 + '<(DEPTH)/../../../shared/port/gl/gl_context_oxide_linux.cc',
661 + '<(DEPTH)/../../../shared/port/gl/gl_implementation_oxide_linux.cc',
662 + '<(DEPTH)/../../../shared/port/gl/gl_surface_oxide_linux.cc',
663 ],
664+<<<<<<< TREE
665 'conditions': [
666 ['OS in ("win", "android", "linux")', {
667 'sources': [
668@@ -162,6 +185,16 @@
669 'gl_bindings_autogen_egl.cc',
670 'gl_bindings_autogen_egl.h',
671 @@ -151,28 +155,28 @@
672+=======
673+ # hard_dependency is necessary for this target because it has actions
674+ # that generate header files included by dependent targets. The header
675+ # files must be generated before the dependents are compiled. The usual
676+ # semantics are to allow the two targets to build concurrently.
677+ 'hard_dependency': 1,
678+ 'actions': [
679+ {
680+@@ -215,24 +221,24 @@
681+>>>>>>> MERGE-SOURCE
682 ],
683 }],
684 ['OS=="linux"', {
685@@ -256,7 +289,11 @@
686 #undef Bool
687 #undef None
688 #undef Status
689+<<<<<<< TREE
690 @@ -314,16 +314,19 @@ typedef uint64 EGLuint64CHROMIUM;
691+=======
692+@@ -316,16 +316,19 @@ typedef uint64 EGLuint64CHROMIUM;
693+>>>>>>> MERGE-SOURCE
694 #if defined(OS_WIN)
695 #include "gl_bindings_autogen_egl.h"
696 #include "gl_bindings_autogen_wgl.h"
697@@ -269,14 +306,21 @@
698 +#include "gl_bindings_autogen_glx.h"
699 +#endif
700 #elif defined(OS_ANDROID)
701- #include "gl_bindings_autogen_egl.h"
702+ #include "gl_bindings_autogen_egl_android.h"
703 #endif
704
705 namespace gfx {
706
707 struct GL_EXPORT DriverGL {
708 void InitializeStaticBindings();
709+<<<<<<< TREE
710 @@ -383,17 +386,17 @@ struct GL_EXPORT DriverEGL {
711+=======
712+@@ -379,17 +382,17 @@ struct GL_EXPORT DriverEGL {
713+ void ClearBindings();
714+
715+ ProcsEGL fn;
716+>>>>>>> MERGE-SOURCE
717 ProcsEGL debug_fn;
718 ExtensionsEGL ext;
719
720@@ -294,8 +338,12 @@
721
722 ProcsGLX fn;
723 ProcsGLX debug_fn;
724+<<<<<<< TREE
725 ExtensionsGLX ext;
726 @@ -425,16 +428,23 @@ GL_EXPORT extern GLXApi* g_current_glx_c
727+=======
728+@@ -419,16 +422,23 @@ GL_EXPORT extern GLXApi* g_current_glx_c
729+>>>>>>> MERGE-SOURCE
730 GL_EXPORT extern DriverEGL g_driver_egl;
731 GL_EXPORT extern DriverGLX g_driver_glx;
732
733
734=== modified file 'patches/series'
735--- patches/series 2015-04-07 14:20:35 +0000
736+++ patches/series 2015-04-10 12:47:19 +0000
737@@ -27,9 +27,16 @@
738 customize-gesture-fling-curve.patch
739 mediahub-support.patch
740 allow-os-override-for-gpu-manager.patch
741+<<<<<<< TREE
742 use-android-style-overlay-scrollbars.patch
743 allow-render-widget-compositor-settings-override.patch
744 enable-accelerated-canvas-on-krillin.patch
745 pulse-audio-role.patch
746 enable-accelerated-canvas-on-arale.patch
747 fix-crbug-473891.patch
748+=======
749+viewport-min-width.patch
750+use-android-style-overlay-scrollbars.patch
751+allow-render-widget-compositor-settings-override.patch
752+bug1423531.patch
753+>>>>>>> MERGE-SOURCE
754
755=== modified file 'patches/support-native-popup-menus.patch'
756--- patches/support-native-popup-menus.patch 2015-04-06 21:26:49 +0000
757+++ patches/support-native-popup-menus.patch 2015-04-10 12:47:19 +0000
758@@ -26,6 +26,7 @@
759
760 void RenderFrameHostImpl::AccessibilitySetFocus(int object_id) {
761 Send(new AccessibilityMsg_SetFocus(routing_id_, object_id));
762+<<<<<<< TREE
763 @@ -1398,17 +1396,16 @@ void RenderFrameHostImpl::OnToggleFullsc
764 else
765 delegate_->ExitFullscreenMode();
766@@ -33,6 +34,15 @@
767 // The previous call might change the fullscreen state. We need to make sure
768 // the renderer is aware of that, which is done via the resize message.
769 render_view_host_->WasResized();
770+=======
771+@@ -1154,17 +1152,16 @@ void RenderFrameHostImpl::OnAccessibilit
772+ if (manager) {
773+ manager->OnFindInPageResult(
774+ params.request_id, params.match_index, params.start_id,
775+ params.start_offset, params.end_id, params.end_offset);
776+ }
777+ }
778+>>>>>>> MERGE-SOURCE
779 }
780
781 -#if defined(OS_MACOSX) || defined(OS_ANDROID)
782@@ -44,7 +54,11 @@
783 view->ShowPopupMenu(this,
784 params.bounds,
785 params.item_height,
786+<<<<<<< TREE
787 @@ -1421,17 +1418,16 @@ void RenderFrameHostImpl::OnShowPopup(
788+=======
789+@@ -1177,17 +1174,16 @@ void RenderFrameHostImpl::OnShowPopup(
790+>>>>>>> MERGE-SOURCE
791 }
792
793 void RenderFrameHostImpl::OnHidePopup() {
794@@ -55,6 +69,7 @@
795 }
796 -#endif
797
798+<<<<<<< TREE
799 #if defined(ENABLE_MEDIA_MOJO_RENDERER)
800 static void CreateMediaRendererService(
801 mojo::InterfaceRequest<mojo::MediaRenderer> request) {
802@@ -63,6 +78,16 @@
803 }
804 #endif
805 @@ -1876,29 +1872,28 @@ RenderFrameHostImpl::GetParentNativeView
806+=======
807+ void RenderFrameHostImpl::RegisterMojoServices() {
808+ GeolocationServiceContext* geolocation_service_context =
809+ delegate_ ? delegate_->GetGeolocationServiceContext() : NULL;
810+ if (geolocation_service_context) {
811+ // TODO(creis): Bind process ID here so that GeolocationServiceImpl
812+ // can perform permissions checks once site isolation is complete.
813+ // crbug.com/426384
814+@@ -1573,29 +1569,28 @@ RenderFrameHostImpl::GetParentNativeView
815+>>>>>>> MERGE-SOURCE
816 void RenderFrameHostImpl::DidSelectPopupMenuItem(int selected_index) {
817 Send(new FrameMsg_SelectPopupMenuItem(routing_id_, selected_index));
818 }
819@@ -116,7 +141,11 @@
820
821 namespace content {
822
823+<<<<<<< TREE
824 @@ -398,20 +396,19 @@ class CONTENT_EXPORT RenderFrameHostImpl
825+=======
826+@@ -365,20 +363,19 @@ class CONTENT_EXPORT RenderFrameHostImpl
827+>>>>>>> MERGE-SOURCE
828 #if defined(OS_WIN)
829 void SetParentNativeViewAccessible(
830 gfx::NativeViewAccessible accessible_parent);
831@@ -138,7 +167,12 @@
832 const CommonNavigationParams& common_params,
833 const RequestNavigationParams& request_params);
834
835+<<<<<<< TREE
836 @@ -508,20 +505,18 @@ class CONTENT_EXPORT RenderFrameHostImpl
837+=======
838+@@ -461,20 +458,18 @@ class CONTENT_EXPORT RenderFrameHostImpl
839+ void OnAccessibilityEvents(
840+>>>>>>> MERGE-SOURCE
841 const std::vector<AccessibilityHostMsg_EventParams>& params,
842 int reset_token);
843 void OnAccessibilityLocationChanges(
844@@ -198,6 +232,7 @@
845 diff --git a/content/common/frame_messages.h b/content/common/frame_messages.h
846 --- a/content/common/frame_messages.h
847 +++ b/content/common/frame_messages.h
848+<<<<<<< TREE
849 @@ -293,17 +293,16 @@ IPC_STRUCT_BEGIN(FrameMsg_TextTrackSetti
850
851 // Text shadow (edge style) of the text track text.
852@@ -205,6 +240,15 @@
853
854 // Size of the text track text.
855 IPC_STRUCT_MEMBER(std::string, text_track_text_size)
856+=======
857+@@ -321,17 +321,16 @@ IPC_STRUCT_BEGIN(FrameHostMsg_BeginNavig
858+ // Optional resource request body (may be null).
859+ IPC_STRUCT_MEMBER(scoped_refptr<content::ResourceRequestBody>,
860+ request_body)
861+
862+ // True if the request was user initiated.
863+ IPC_STRUCT_MEMBER(bool, has_user_gesture)
864+>>>>>>> MERGE-SOURCE
865 IPC_STRUCT_END()
866
867 -#if defined(OS_MACOSX) || defined(OS_ANDROID)
868@@ -216,7 +260,11 @@
869
870 // The height of each item in the menu.
871 IPC_STRUCT_MEMBER(int, item_height)
872+<<<<<<< TREE
873 @@ -318,17 +317,16 @@ IPC_STRUCT_BEGIN(FrameHostMsg_ShowPopup_
874+=======
875+@@ -346,17 +345,16 @@ IPC_STRUCT_BEGIN(FrameHostMsg_ShowPopup_
876+>>>>>>> MERGE-SOURCE
877 IPC_STRUCT_MEMBER(std::vector<content::MenuItem>, popup_items)
878
879 // Whether items should be right-aligned.
880@@ -234,9 +282,16 @@
881 // presented. When the frame finishes presenting, a matching
882 // FrameHostMsg_CompositorFrameSwappedACK should be sent back to the
883 // RenderViewHost that was produced the CompositorFrame.
884+<<<<<<< TREE
885 @@ -503,24 +501,22 @@ IPC_MESSAGE_ROUTED1(FrameMsg_DidUpdateSa
886 // changed in another process.
887 IPC_MESSAGE_ROUTED1(FrameMsg_DidUpdateName, std::string /* name */)
888+=======
889+@@ -505,24 +503,22 @@ IPC_MESSAGE_ROUTED1(FrameMsg_TextSurroun
890+ // Tells the renderer to insert a link to the specified stylesheet. This is
891+ // needed to support navigation transitions.
892+ IPC_MESSAGE_ROUTED1(FrameMsg_AddStyleSheetByURL, std::string)
893+>>>>>>> MERGE-SOURCE
894
895 // Send to the RenderFrame to set text track style settings.
896 // Sent for top-level frames.
897@@ -260,10 +315,17 @@
898 #endif
899
900 // PlzNavigate
901+<<<<<<< TREE
902 @@ -848,16 +844,12 @@ IPC_MESSAGE_ROUTED1(FrameHostMsg_VisualS
903 // Puts the browser into "tab fullscreen" mode for the sending renderer.
904 // See the comment in chrome/browser/ui/browser.h for more details.
905 IPC_MESSAGE_ROUTED1(FrameHostMsg_ToggleFullscreen, bool /* enter_fullscreen */)
906+=======
907+@@ -827,16 +823,12 @@ IPC_MESSAGE_CONTROL1(FrameHostMsg_AddNav
908+ IPC_MESSAGE_ROUTED2(FrameHostMsg_BeginNavigation,
909+ FrameHostMsg_BeginNavigation_Params,
910+ content::CommonNavigationParams)
911+>>>>>>> MERGE-SOURCE
912
913 // Dispatch a load event for this frame in the iframe element of an
914 // out-of-process parent frame.
915@@ -375,7 +437,11 @@
916 diff --git a/content/renderer/render_frame_impl.cc b/content/renderer/render_frame_impl.cc
917 --- a/content/renderer/render_frame_impl.cc
918 +++ b/content/renderer/render_frame_impl.cc
919+<<<<<<< TREE
920 @@ -958,23 +958,21 @@ bool RenderFrameImpl::Send(IPC::Message*
921+=======
922+@@ -891,23 +891,21 @@ bool RenderFrameImpl::Send(IPC::Message*
923+>>>>>>> MERGE-SOURCE
924 delete message;
925 return false;
926 }
927@@ -399,7 +465,13 @@
928 return false;
929
930 // TODO(kenrb): document() should not be null, but as a transitional step
931+<<<<<<< TREE
932 @@ -1044,19 +1042,18 @@ bool RenderFrameImpl::OnMessageReceived(
933+=======
934+@@ -973,19 +971,18 @@ bool RenderFrameImpl::OnMessageReceived(
935+ OnTextSurroundingSelectionRequest)
936+ IPC_MESSAGE_HANDLER(FrameMsg_AddStyleSheetByURL,
937+>>>>>>> MERGE-SOURCE
938 OnAddStyleSheetByURL)
939 IPC_MESSAGE_HANDLER(FrameMsg_SetAccessibilityMode,
940 OnSetAccessibilityMode)
941@@ -420,6 +492,7 @@
942 return handled;
943 }
944
945+<<<<<<< TREE
946 @@ -1597,31 +1594,29 @@ void RenderFrameImpl::OnTextTrackSetting
947 render_view_->webview()->settings()->setTextTrackTextColor(
948 WebString::fromUTF8(params.text_track_text_color));
949@@ -427,6 +500,15 @@
950 WebString::fromUTF8(params.text_track_text_shadow));
951 render_view_->webview()->settings()->setTextTrackTextSize(
952 WebString::fromUTF8(params.text_track_text_size));
953+=======
954+@@ -1478,31 +1475,29 @@ void RenderFrameImpl::OnDisownOpener() {
955+ // disowning the opener on subframes, we will need to move WebContentsImpl's
956+ // opener_ to FrameTreeNode.
957+ CHECK(!frame_->parent());
958+
959+ if (frame_->opener())
960+ frame_->setOpener(NULL);
961+>>>>>>> MERGE-SOURCE
962 }
963
964 -#if defined(OS_ANDROID)
965@@ -452,7 +534,11 @@
966 external_popup_menu_->DidSelectItem(selected_index);
967 external_popup_menu_.reset();
968 }
969+<<<<<<< TREE
970 @@ -2003,17 +1998,17 @@ RenderFrameImpl::createWorkerContentSett
971+=======
972+@@ -1909,17 +1904,17 @@ RenderFrameImpl::createWorkerPermissionC
973+>>>>>>> MERGE-SOURCE
974 DCHECK(!frame_ || frame_ == frame);
975 return GetContentClient()->renderer()->CreateWorkerContentSettingsClientProxy(
976 this, frame);
977@@ -513,10 +599,16 @@
978 #endif
979
980 void OnCommitNavigation(const ResourceResponseHead& response,
981+<<<<<<< TREE
982 const GURL& stream_url,
983 const CommonNavigationParams& common_params,
984 const RequestNavigationParams& request_params);
985 @@ -910,20 +907,18 @@ class CONTENT_EXPORT RenderFrameImpl
986+=======
987+@@ -828,20 +825,18 @@ class CONTENT_EXPORT RenderFrameImpl
988+
989+ // The current accessibility mode.
990+>>>>>>> MERGE-SOURCE
991 AccessibilityMode accessibility_mode_;
992
993 // Only valid if |accessibility_mode_| is anything other than
994@@ -540,7 +632,11 @@
995 diff --git a/content/renderer/render_thread_impl.cc b/content/renderer/render_thread_impl.cc
996 --- a/content/renderer/render_thread_impl.cc
997 +++ b/content/renderer/render_thread_impl.cc
998+<<<<<<< TREE
999 @@ -465,20 +465,18 @@ RenderThreadImpl::RenderThreadImpl(
1000+=======
1001+@@ -437,20 +437,18 @@ RenderThreadImpl::RenderThreadImpl(
1002+>>>>>>> MERGE-SOURCE
1003
1004 void RenderThreadImpl::Init() {
1005 TRACE_EVENT_BEGIN_ETW("RenderThreadImpl::Init", 0, "");
1006@@ -564,8 +660,12 @@
1007 diff --git a/content/renderer/render_widget.cc b/content/renderer/render_widget.cc
1008 --- a/content/renderer/render_widget.cc
1009 +++ b/content/renderer/render_widget.cc
1010+<<<<<<< TREE
1011 @@ -678,23 +678,21 @@ gfx::Rect RenderWidget::AdjustValidation
1012
1013+=======
1014+@@ -650,23 +650,21 @@ gfx::Rect RenderWidget::AdjustValidation
1015+>>>>>>> MERGE-SOURCE
1016 void RenderWidget::SetScreenMetricsEmulationParameters(
1017 bool enabled,
1018 const blink::WebDeviceEmulationParams& params) {
1019@@ -591,10 +691,14 @@
1020 diff --git a/content/renderer/render_widget.h b/content/renderer/render_widget.h
1021 --- a/content/renderer/render_widget.h
1022 +++ b/content/renderer/render_widget.h
1023+<<<<<<< TREE
1024 @@ -390,20 +390,18 @@ class CONTENT_EXPORT RenderWidget
1025 const gfx::Rect& resizer_rect,
1026 bool is_fullscreen,
1027 ResizeAck resize_ack);
1028+=======
1029+@@ -378,20 +378,18 @@ class CONTENT_EXPORT RenderWidget
1030+>>>>>>> MERGE-SOURCE
1031 // Used to force the size of a window when running layout tests.
1032 void SetWindowRectSynchronously(const gfx::Rect& new_window_rect);
1033 virtual void SetScreenMetricsEmulationParameters(
1034
1035=== modified file 'patches/use-android-style-overlay-scrollbars.patch'
1036--- patches/use-android-style-overlay-scrollbars.patch 2015-03-25 21:56:29 +0000
1037+++ patches/use-android-style-overlay-scrollbars.patch 2015-04-10 12:47:19 +0000
1038@@ -1,3 +1,4 @@
1039+<<<<<<< TREE
1040 # Description: Use Android-style overlay and pinch-viewport scrollbars, and
1041 # disable scrollbars for the main frame when pinch-viewport is enabled (the
1042 # pinch-viewport scrollbars will be used there). This makes an assumption
1043@@ -104,3 +105,78 @@
1044 }
1045
1046 int ScrollbarThemeAura::scrollbarThickness(ScrollbarControlSize controlSize)
1047+=======
1048+# Description: Use Android-style overlay and pinch-viewport scrollbars, and
1049+# disable scrollbars for the main frame when pinch-viewport is enabled (the
1050+# pinch-viewport scrollbars will be used there). This makes an assumption
1051+# that overlay scrollbars and pinch-viewport are mobile-only. If we want to
1052+# support these on desktop in the future, then we'll need to rethink this
1053+# Author: Chris Coulson <chris.coulson@canonical.com>
1054+
1055+diff --git a/third_party/WebKit/Source/core/frame/FrameView.cpp b/third_party/WebKit/Source/core/frame/FrameView.cpp
1056+--- a/third_party/WebKit/Source/core/frame/FrameView.cpp
1057++++ b/third_party/WebKit/Source/core/frame/FrameView.cpp
1058+@@ -3017,17 +3017,17 @@ bool FrameView::scrollbarsDisabled() con
1059+ {
1060+ if (!m_frame->settings() || !m_frame->settings()->pinchVirtualViewportEnabled())
1061+ return false;
1062+
1063+ // FIXME: This decision should be made based on whether or not to use
1064+ // viewport scrollbars for the main frame. This is implicitly just Android,
1065+ // but should be made explicit.
1066+ // http://crbug.com/434533
1067+-#if !OS(ANDROID)
1068++#if 0
1069+ return false;
1070+ #else
1071+ return m_frame->isMainFrame();
1072+ #endif
1073+ }
1074+
1075+ AXObjectCache* FrameView::axObjectCache() const
1076+ {
1077+diff --git a/third_party/WebKit/Source/core/frame/PinchViewport.cpp b/third_party/WebKit/Source/core/frame/PinchViewport.cpp
1078+--- a/third_party/WebKit/Source/core/frame/PinchViewport.cpp
1079++++ b/third_party/WebKit/Source/core/frame/PinchViewport.cpp
1080+@@ -341,17 +341,17 @@ void PinchViewport::setupScrollbar(WebSc
1081+ m_webOverlayScrollbarHorizontal : m_webOverlayScrollbarVertical;
1082+
1083+ int thumbThickness = frameHost().settings().pinchOverlayScrollbarThickness();
1084+ int scrollbarThickness = thumbThickness;
1085+ int scrollbarMargin = scrollbarThickness;
1086+
1087+ // FIXME: Rather than manually creating scrollbar layers, we should create
1088+ // real scrollbars so we can reuse all the machinery from ScrollbarTheme.
1089+-#if OS(ANDROID)
1090++#if 1
1091+ thumbThickness = ScrollbarTheme::theme()->thumbThickness(0);
1092+ scrollbarThickness = ScrollbarTheme::theme()->scrollbarThickness(RegularScrollbar);
1093+ scrollbarMargin = ScrollbarTheme::theme()->scrollbarMargin();
1094+ #endif
1095+
1096+ if (!webScrollbarLayer) {
1097+ ScrollingCoordinator* coordinator = frameHost().page().scrollingCoordinator();
1098+ ASSERT(coordinator);
1099+diff --git a/third_party/WebKit/Source/platform/scroll/ScrollbarThemeAura.cpp b/third_party/WebKit/Source/platform/scroll/ScrollbarThemeAura.cpp
1100+--- a/third_party/WebKit/Source/platform/scroll/ScrollbarThemeAura.cpp
1101++++ b/third_party/WebKit/Source/platform/scroll/ScrollbarThemeAura.cpp
1102+@@ -46,17 +46,17 @@ namespace blink {
1103+ static bool useMockTheme()
1104+ {
1105+ return LayoutTestSupport::isRunningLayoutTest();
1106+ }
1107+
1108+ ScrollbarTheme* ScrollbarTheme::nativeTheme()
1109+ {
1110+ if (RuntimeEnabledFeatures::overlayScrollbarsEnabled()) {
1111+- DEFINE_STATIC_LOCAL(ScrollbarThemeOverlay, theme, (10, 0, ScrollbarThemeOverlay::AllowHitTest));
1112++ DEFINE_STATIC_LOCAL(ScrollbarThemeOverlay, theme, (3, 3, ScrollbarThemeOverlay::DisallowHitTest, Color(128, 128, 128, 128)));
1113+ return &theme;
1114+ }
1115+
1116+ DEFINE_STATIC_LOCAL(ScrollbarThemeAura, theme, ());
1117+ return &theme;
1118+ }
1119+
1120+ int ScrollbarThemeAura::scrollbarThickness(ScrollbarControlSize controlSize)
1121+>>>>>>> MERGE-SOURCE
1122
1123=== modified file 'qt/CMakeLists.txt'
1124=== modified file 'qt/VERSION'
1125--- qt/VERSION 2015-02-23 23:37:56 +0000
1126+++ qt/VERSION 2015-04-10 12:47:19 +0000
1127@@ -1,3 +1,7 @@
1128 MAJOR=1
1129+<<<<<<< TREE
1130 MINOR=7
1131 PATCH=0
1132+=======
1133+MINOR=5
1134+PATCH=7>>>>>>> MERGE-SOURCE
1135
1136=== modified file 'qt/core/browser/oxide_qt_browser_startup.cc'
1137--- qt/core/browser/oxide_qt_browser_startup.cc 2015-04-03 17:31:03 +0000
1138+++ qt/core/browser/oxide_qt_browser_startup.cc 2015-04-10 12:47:19 +0000
1139@@ -115,8 +115,13 @@
1140 process_model_ = model;
1141 }
1142
1143+<<<<<<< TREE
1144 #if QT_VERSION < QT_VERSION_CHECK(5, 3, 0)
1145 void BrowserStartup::SetSharedGLContext(GLContextDependent* context) {
1146+=======
1147+#if QT_VERSION < QT_VERSION_CHECK(5, 3, 0)
1148+void BrowserStartup::SetSharedGLContext(GLContextAdopted* context) {
1149+>>>>>>> MERGE-SOURCE
1150 DCHECK(!oxide::BrowserProcessMain::GetInstance()->IsRunning());
1151 shared_gl_context_ = context;
1152 }
1153@@ -150,6 +155,7 @@
1154 gl_impl = shared_gl_context_->implementation();
1155 } else {
1156 QString platform = QGuiApplication::platformName();
1157+<<<<<<< TREE
1158 if (QGuiApplication::platformNativeInterface()) {
1159 if (platform == QLatin1String("xcb")) {
1160 gl_impl = gfx::kGLImplementationDesktopGL;
1161@@ -160,6 +166,13 @@
1162 << "Cannot determine GL implementation to use - "
1163 << "unrecognized Qt platform: " << qPrintable(platform);
1164 }
1165+=======
1166+ if (platform == QLatin1String("xcb")) {
1167+ supported_gl_impls |= oxide::SUPPORTED_GL_IMPL_DESKTOP_GL;
1168+ supported_gl_impls |= oxide::SUPPORTED_GL_IMPL_EGL_GLES2;
1169+ } else if (platform.startsWith("ubuntu") || platform == QLatin1String("mirserver")) {
1170+ supported_gl_impls |= oxide::SUPPORTED_GL_IMPL_EGL_GLES2;
1171+>>>>>>> MERGE-SOURCE
1172 } else {
1173 LOG(WARNING)
1174 << "Unable to use GL - No QPlatformNativeInterface for "
1175
1176=== modified file 'qt/core/browser/oxide_qt_browser_startup.h'
1177--- qt/core/browser/oxide_qt_browser_startup.h 2015-03-24 17:06:40 +0000
1178+++ qt/core/browser/oxide_qt_browser_startup.h 2015-04-10 12:47:19 +0000
1179@@ -44,11 +44,16 @@
1180 oxide::ProcessModel GetProcessModel();
1181 void SetProcessModel(oxide::ProcessModel model);
1182
1183+<<<<<<< TREE
1184 GLContextDependent* shared_gl_context() const {
1185 return shared_gl_context_.get();
1186 }
1187 #if QT_VERSION < QT_VERSION_CHECK(5, 3, 0)
1188 void SetSharedGLContext(GLContextDependent* context);
1189+=======
1190+#if QT_VERSION < QT_VERSION_CHECK(5, 3, 0)
1191+ void SetSharedGLContext(GLContextAdopted* context);
1192+>>>>>>> MERGE-SOURCE
1193 #endif
1194
1195 bool DidSelectProcessModelFromEnv() const;
1196
1197=== modified file 'qt/core/glue/oxide_qt_init.cc'
1198--- qt/core/glue/oxide_qt_init.cc 2015-04-02 12:13:31 +0000
1199+++ qt/core/glue/oxide_qt_init.cc 2015-04-10 12:47:19 +0000
1200@@ -18,8 +18,13 @@
1201 #include "oxide_qt_init.h"
1202
1203 #include "qt/core/browser/oxide_qt_browser_startup.h"
1204+<<<<<<< TREE
1205 #if QT_VERSION < QT_VERSION_CHECK(5, 3, 0)
1206 #include "qt/core/gpu/oxide_qt_gl_context_dependent.h"
1207+=======
1208+#if QT_VERSION < QT_VERSION_CHECK(5, 3, 0)
1209+#include "qt/core/gpu/oxide_qt_gl_context_adopted.h"
1210+>>>>>>> MERGE-SOURCE
1211 #endif
1212
1213 namespace oxide {
1214
1215=== modified file 'qt/quick/CMakeLists.txt'
1216--- qt/quick/CMakeLists.txt 2015-04-09 16:41:51 +0000
1217+++ qt/quick/CMakeLists.txt 2015-04-10 12:47:19 +0000
1218@@ -35,12 +35,20 @@
1219 api/oxideqquickwebframe.cc
1220 api/oxideqquickwebview.cc
1221 api/oxidequseragentoverriderequest.cc
1222+<<<<<<< TREE
1223 oxide_qquick_accelerated_frame_node.cc
1224 oxide_qquick_alert_dialog.cc
1225 oxide_qquick_before_unload_dialog.cc
1226 oxide_qquick_confirm_dialog.cc
1227 oxide_qquick_file_picker.cc
1228 oxide_qquick_image_frame_node.cc
1229+=======
1230+ oxide_qquick_accelerated_frame_node.cc
1231+ oxide_qquick_alert_dialog_delegate.cc
1232+ oxide_qquick_before_unload_dialog_delegate.cc
1233+ oxide_qquick_confirm_dialog_delegate.cc
1234+ oxide_qquick_file_picker_delegate.cc
1235+>>>>>>> MERGE-SOURCE
1236 oxide_qquick_init.cc
1237 oxide_qquick_javascript_dialog.cc
1238 oxide_qquick_prompt_dialog.cc
1239
1240=== modified file 'qt/quick/api/oxideqquickwebframe.cc'
1241--- qt/quick/api/oxideqquickwebframe.cc 2015-04-07 17:42:38 +0000
1242+++ qt/quick/api/oxideqquickwebframe.cc 2015-04-10 12:47:19 +0000
1243@@ -211,6 +211,7 @@
1244 OxideQQuickScriptMessageRequest* request =
1245 new OxideQQuickScriptMessageRequest();
1246
1247+<<<<<<< TREE
1248 QVariant aux = args;
1249 if (aux.userType() == qMetaTypeId<QJSValue>()) {
1250 aux = aux.value<QJSValue>().toVariant();
1251@@ -219,6 +220,15 @@
1252 if (!d->proxy()->sendMessage(
1253 context, msg_id, aux,
1254 OxideQQuickScriptMessageRequestPrivate::get(request))) {
1255+=======
1256+ QVariant aux = args;
1257+ if (aux.userType() == qMetaTypeId<QJSValue>()) {
1258+ aux = aux.value<QJSValue>().toVariant();
1259+ }
1260+
1261+ if (!d->sendMessage(context, msg_id, aux,
1262+ OxideQQuickScriptMessageRequestPrivate::get(request))) {
1263+>>>>>>> MERGE-SOURCE
1264 delete request;
1265 return nullptr;
1266 }
1267@@ -231,10 +241,19 @@
1268 const QVariant& args) {
1269 Q_D(OxideQQuickWebFrame);
1270
1271+<<<<<<< TREE
1272 QVariant aux = args;
1273 if (aux.userType() == qMetaTypeId<QJSValue>()) {
1274 aux = aux.value<QJSValue>().toVariant();
1275 }
1276
1277 d->proxy()->sendMessageNoReply(context, msg_id, aux);
1278+=======
1279+ QVariant aux = args;
1280+ if (aux.userType() == qMetaTypeId<QJSValue>()) {
1281+ aux = aux.value<QJSValue>().toVariant();
1282+ }
1283+
1284+ d->sendMessageNoReply(context, msg_id, aux);
1285+>>>>>>> MERGE-SOURCE
1286 }
1287
1288=== modified file 'qt/quick/api/oxideqquickwebview.cc'
1289--- qt/quick/api/oxideqquickwebview.cc 2015-04-09 16:41:51 +0000
1290+++ qt/quick/api/oxideqquickwebview.cc 2015-04-10 12:47:19 +0000
1291@@ -46,11 +46,18 @@
1292 #include "qt/core/api/oxideqnewviewrequest.h"
1293 #include "qt/core/api/oxideqpermissionrequest.h"
1294 #include "qt/quick/oxide_qquick_accelerated_frame_node.h"
1295+<<<<<<< TREE
1296 #include "qt/quick/oxide_qquick_alert_dialog.h"
1297 #include "qt/quick/oxide_qquick_before_unload_dialog.h"
1298 #include "qt/quick/oxide_qquick_confirm_dialog.h"
1299 #include "qt/quick/oxide_qquick_file_picker.h"
1300 #include "qt/quick/oxide_qquick_image_frame_node.h"
1301+=======
1302+#include "qt/quick/oxide_qquick_alert_dialog_delegate.h"
1303+#include "qt/quick/oxide_qquick_before_unload_dialog_delegate.h"
1304+#include "qt/quick/oxide_qquick_confirm_dialog_delegate.h"
1305+#include "qt/quick/oxide_qquick_file_picker_delegate.h"
1306+>>>>>>> MERGE-SOURCE
1307 #include "qt/quick/oxide_qquick_init.h"
1308 #include "qt/quick/oxide_qquick_prompt_dialog.h"
1309 #include "qt/quick/oxide_qquick_software_frame_node.h"
1310@@ -990,6 +997,7 @@
1311
1312 return node;
1313 }
1314+<<<<<<< TREE
1315
1316 if (handle->GetType() ==
1317 oxide::qt::CompositorFrameHandle::TYPE_IMAGE) {
1318@@ -1004,6 +1012,8 @@
1319
1320 return node;
1321 }
1322+=======
1323+>>>>>>> MERGE-SOURCE
1324
1325 if (handle->GetType() ==
1326 oxide::qt::CompositorFrameHandle::TYPE_SOFTWARE) {
1327
1328=== modified file 'qt/renderer/renderer.gyp'
1329--- qt/renderer/renderer.gyp 2015-02-19 22:53:17 +0000
1330+++ qt/renderer/renderer.gyp 2015-04-10 12:47:19 +0000
1331@@ -36,7 +36,12 @@
1332 ['enable_tcmalloc==1', {
1333 'defines': ['ENABLE_TCMALLOC'],
1334 'dependencies': [
1335- '../../shared/allocator.gyp:allocator',
1336+<<<<<<< TREE
1337+ '../../shared/allocator.gyp:allocator',
1338+=======
1339+ '<(DEPTH)/base/base.gyp:base',
1340+ '../../shared/allocator.gyp:allocator',
1341+>>>>>>> MERGE-SOURCE
1342 ],
1343 }],
1344 ['component=="shared_library"', {
1345
1346=== modified file 'qt/tests/qmltests/api/tst_WebView_loading.qml'
1347=== modified file 'shared/browser/compositor/oxide_compositor_utils.cc'
1348--- shared/browser/compositor/oxide_compositor_utils.cc 2015-03-24 17:06:40 +0000
1349+++ shared/browser/compositor/oxide_compositor_utils.cc 2015-04-10 12:47:19 +0000
1350@@ -78,11 +78,45 @@
1351 : command_buffer_id_(client_id, route_id),
1352 mailbox_(mailbox),
1353 sync_point_(sync_point),
1354+<<<<<<< TREE
1355 task_runner_(task_runner) {}
1356+=======
1357+ callback_(callback),
1358+ task_runner_(task_runner),
1359+ gpu_thread_checker_(gpu_thread_checker),
1360+ response_posted_(false) {
1361+ DCHECK(task_runner_.get());
1362+ DCHECK(!callback_.is_null());
1363+ DCHECK(context_provider_.get());
1364+
1365+ route_id_ = content::oxide_gpu_shim::GetContextProviderRouteID(
1366+ static_cast<content::ContextProviderCommandBuffer*>(
1367+ context_provider_.get()));
1368+ }
1369+
1370+ virtual ~FetchTextureResourcesTask() {
1371+ if (response_posted_ && context_provider_) {
1372+ // XXX: This is a bit of a hack - basically if we arrive here, it means
1373+ // that the task posted to the main thread never ran and we're now
1374+ // being destroyed as part of the main loop teardown.
1375+ // As cc::ContextProvider owns lots of classes with non-trivial
1376+ // destructors, we deliberately leak it here in order to avoid shut-
1377+ // down crashes. This is a workaround for the 1.5 branch. The full fix
1378+ // is http://bazaar.launchpad.net/~oxide-developers/oxide/oxide.trunk/revision/1003
1379+ LOG(ERROR) <<
1380+ "Leaking cc::ContextProvider to avoid a shutdown crash. You should only see "
1381+ "this message during application shutdown";
1382+ context_provider_->AddRef();
1383+ }
1384+ }
1385+
1386+ void FetchTextureResourcesOnGpuThread();
1387+>>>>>>> MERGE-SOURCE
1388
1389 private:
1390 CommandBufferID command_buffer_id_;
1391 gpu::Mailbox mailbox_;
1392+<<<<<<< TREE
1393 uint32_t sync_point_;
1394 scoped_refptr<base::SingleThreadTaskRunner> task_runner_;
1395 };
1396@@ -137,6 +171,14 @@
1397 private:
1398 CompositorUtils::CreateEGLImageFromMailboxCallback callback_;
1399 EGLImageKHR egl_image_;
1400+=======
1401+ uint32 sync_point_;
1402+ CompositorUtils::CreateGLFrameHandleCallback callback_;
1403+ scoped_refptr<base::TaskRunner> task_runner_;
1404+ base::ThreadChecker gpu_thread_checker_;
1405+
1406+ bool response_posted_;
1407+>>>>>>> MERGE-SOURCE
1408 };
1409
1410 class CompositorThread : public base::Thread {
1411@@ -245,6 +287,7 @@
1412 DISALLOW_COPY_AND_ASSIGN(CompositorUtilsImpl);
1413 };
1414
1415+<<<<<<< TREE
1416 FetchTextureResourcesTaskInfo::~FetchTextureResourcesTaskInfo() {
1417 DCHECK(CompositorUtilsImpl::GetInstance()->CalledOnMainOrCompositorThread());
1418 }
1419@@ -281,6 +324,70 @@
1420 DCHECK(task_runner()->RunsTasksOnCurrentThread());
1421 callback_.Run(egl_image_);
1422 egl_image_ = EGL_NO_IMAGE_KHR;
1423+=======
1424+GLFrameHandle::~GLFrameHandle() {
1425+ content::GpuChildThread::GetTaskRunner()->PostTask(
1426+ FROM_HERE,
1427+ base::Bind(&CompositorUtilsImpl::RemoveTextureRef,
1428+ base::Unretained(CompositorUtilsImpl::GetInstance()),
1429+ mailbox()));
1430+}
1431+
1432+void FetchTextureResourcesTask::OnSyncPointRetired() {
1433+ DCHECK(gpu_thread_checker_.CalledOnValidThread());
1434+
1435+ GLuint service_id = 0;
1436+ TextureRefHolder ref =
1437+ content::oxide_gpu_shim::CreateTextureRef(client_id_,
1438+ route_id_,
1439+ mailbox_);
1440+ if (ref.IsValid() &&
1441+ CompositorUtilsImpl::GetInstance()->AddTextureRef(mailbox_, ref)) {
1442+ service_id = ref.GetServiceID();
1443+ }
1444+
1445+ response_posted_ = true;
1446+
1447+ task_runner_->PostTask(
1448+ FROM_HERE,
1449+ base::Bind(&FetchTextureResourcesTask::SendResponseOnDestinationThread,
1450+ this, service_id));
1451+}
1452+
1453+void FetchTextureResourcesTask::SendResponseOnDestinationThread(
1454+ GLuint service_id) {
1455+ DCHECK(task_runner_->RunsTasksOnCurrentThread());
1456+
1457+ if (service_id == 0) {
1458+ callback_.Run(scoped_ptr<GLFrameData>());
1459+ return;
1460+ }
1461+
1462+ scoped_ptr<GLFrameHandle> handle(
1463+ new GLFrameHandle(mailbox_,
1464+ service_id,
1465+ context_provider_));
1466+ callback_.Run(handle.Pass());
1467+
1468+ callback_.Reset();
1469+ context_provider_ = nullptr;
1470+}
1471+
1472+void FetchTextureResourcesTask::FetchTextureResourcesOnGpuThread() {
1473+ DCHECK(gpu_thread_checker_.CalledOnValidThread());
1474+
1475+ gpu::SyncPointManager* sync_point_manager =
1476+ content::GpuChildThread::GetChannelManager()->sync_point_manager();
1477+ if (sync_point_manager->IsSyncPointRetired(sync_point_)) {
1478+ OnSyncPointRetired();
1479+ return;
1480+ }
1481+
1482+ sync_point_manager->AddSyncPointCallback(
1483+ sync_point_,
1484+ base::Bind(&FetchTextureResourcesTask::OnSyncPointRetired,
1485+ this));
1486+>>>>>>> MERGE-SOURCE
1487 }
1488
1489 void CompositorThread::Init() {
1490
1491=== modified file 'shared/browser/oxide_browser_process_main.cc'
1492--- shared/browser/oxide_browser_process_main.cc 2015-03-25 21:56:29 +0000
1493+++ shared/browser/oxide_browser_process_main.cc 2015-04-10 12:47:19 +0000
1494@@ -322,7 +322,15 @@
1495
1496 FormFactor form_factor = GetFormFactorHint();
1497
1498+<<<<<<< TREE
1499 if (form_factor != FORM_FACTOR_DESKTOP) {
1500+=======
1501+ if (form_factor == FORM_FACTOR_DESKTOP) {
1502+ // Pinch-viewport is not supported on desktop yet
1503+ // see https://launchpad.net/bugs/1426567 and https://launchpad.net/bugs/1408686
1504+ command_line->AppendSwitch(cc::switches::kDisablePinchVirtualViewport);
1505+ } else {
1506+>>>>>>> MERGE-SOURCE
1507 command_line->AppendSwitch(switches::kEnableViewport);
1508 command_line->AppendSwitch(switches::kEnableViewportMeta);
1509 command_line->AppendSwitch(switches::kMainFrameResizesAreOrientationChanges);
1510
1511=== modified file 'shared/browser/oxide_content_browser_client.cc'
1512--- shared/browser/oxide_content_browser_client.cc 2015-04-07 14:20:35 +0000
1513+++ shared/browser/oxide_content_browser_client.cc 2015-04-10 12:47:19 +0000
1514@@ -64,6 +64,21 @@
1515
1516 namespace oxide {
1517
1518+<<<<<<< TREE
1519+=======
1520+namespace {
1521+
1522+void RespondToGeolocationPermissionRequest(
1523+ const base::Callback<void(bool)>& callback,
1524+ bool result) {
1525+ content::GeolocationProvider::GetInstance()
1526+ ->UserDidOptIntoLocationServices();
1527+ callback.Run(result);
1528+}
1529+
1530+}
1531+
1532+>>>>>>> MERGE-SOURCE
1533 ContentBrowserClient::ContentBrowserClient() {}
1534
1535 ContentBrowserClient::~ContentBrowserClient() {}
1536
1537=== modified file 'shared/browser/oxide_gesture_provider.cc'
1538=== modified file 'shared/browser/oxide_web_frame.cc'
1539--- shared/browser/oxide_web_frame.cc 2015-04-07 15:22:49 +0000
1540+++ shared/browser/oxide_web_frame.cc 2015-04-10 12:47:19 +0000
1541@@ -231,10 +231,17 @@
1542 std::find(current_script_message_requests_.begin(),
1543 current_script_message_requests_.end(),
1544 req);
1545+<<<<<<< TREE
1546 if (it == current_script_message_requests_.end()) {
1547 // can happen for non "persisted" requests e.g. SendMessageNoReply
1548 return;
1549 }
1550+=======
1551+ if (it == current_script_message_requests_.end()) {
1552+ // can happen for non lasting requests e.g. SendMessageNoReply
1553+ return;
1554+ }
1555+>>>>>>> MERGE-SOURCE
1556
1557 if (!destroyed_) {
1558 current_script_message_requests_.erase(it);
1559
1560=== modified file 'shared/browser/oxide_web_view.cc'
1561=== modified file 'shared/common/oxide_event_utils.cc'
1562=== modified file 'shared/renderer/oxide_content_renderer_client.cc'
1563--- shared/renderer/oxide_content_renderer_client.cc 2015-04-02 08:05:08 +0000
1564+++ shared/renderer/oxide_content_renderer_client.cc 2015-04-10 12:47:19 +0000
1565@@ -158,6 +158,7 @@
1566 }
1567 #endif
1568
1569+<<<<<<< TREE
1570 void ContentRendererClient::OverrideCompositorSettings(
1571 cc::LayerTreeSettings* settings) {
1572 // XXX: If we support overlay scrollbars on desktop, then we'll want to
1573@@ -184,4 +185,27 @@
1574 }
1575 }
1576
1577+=======
1578+void ContentRendererClient::OverrideCompositorSettings(
1579+ cc::LayerTreeSettings* settings) {
1580+ // XXX: If we support overlay scrollbars on desktop, then we'll want to
1581+ // use THINNING here, change the other settings and modify Blink to
1582+ // be able to have 2 different overlay scrollbar styles (a small
1583+ // non-hit-tested style for mobile and a much larger hit-tested style
1584+ // for desktop)
1585+ if (ui::IsOverlayScrollbarEnabled()) {
1586+ // XXX: This will need updating if we support overlay scrollbars on
1587+ // desktop. See https://launchpad.net/bugs/1426567
1588+ settings->scrollbar_animator = cc::LayerTreeSettings::LinearFade;
1589+ settings->scrollbar_fade_delay_ms = 300;
1590+ settings->scrollbar_fade_resize_delay_ms = 2000;
1591+ settings->scrollbar_fade_duration_ms = 300;
1592+ }
1593+
1594+ // XXX: This will need changing if we support pinch-viewport on desktop
1595+ // with normal scrollbars. See https://launchpad.net/bugs/1426567
1596+ settings->scrollbar_show_scale_threshold = 1.f;
1597+}
1598+
1599+>>>>>>> MERGE-SOURCE
1600 } // namespace oxide
1601
1602=== modified file 'shared/renderer/oxide_content_renderer_client.h'
1603=== modified file 'shared/shared.gyp'

Subscribers

People subscribed via source and target branches