summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--patches/chromium/0020-fixup-select-elements.patch52
-rw-r--r--patches/chromium/third_party/WebKit/0005-Use-compositor-with-select-popups.patch238
-rw-r--r--patches/chromium/third_party/WebKit/0006-Use-compositor-for-page-popups.patch190
-rw-r--r--patches/chromium/v8/0001-Prevent-V8-from-overridding-the-RuntimeLibrary-cflag.patch55
-rwxr-xr-xpatches/patch-chromium.sh3
-rwxr-xr-xpatches/update-patches.sh3
m---------src/3rdparty0
7 files changed, 539 insertions, 2 deletions
diff --git a/patches/chromium/0020-fixup-select-elements.patch b/patches/chromium/0020-fixup-select-elements.patch
new file mode 100644
index 000000000..47e94a03a
--- /dev/null
+++ b/patches/chromium/0020-fixup-select-elements.patch
@@ -0,0 +1,52 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Pierre Rossi <pierre.rossi@digia.com>
+Date: Thu, 3 Apr 2014 12:18:16 +0200
+Subject: fixup select elements.
+
+We use RenderWidgetHostViewQt, not RWHVMac, even on Mac.
+Since some platform decisions seem to have transpired all the way to
+the content layer, we should simply use the web ui for select elements
+on mac for the time being.
+
+Change-Id: Iefe1dd3b246fc210ac18ff9eb0e7ad498c061eac
+Reviewed-by: Jocelyn Turcotte <jocelyn.turcotte@digia.com>
+---
+ content/browser/web_contents/web_contents_impl.cc | 4 ++--
+ content/renderer/render_thread_impl.cc | 2 +-
+ 2 files changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/content/browser/web_contents/web_contents_impl.cc b/content/browser/web_contents/web_contents_impl.cc
+index 6b6cf00..ee5b901d 100644
+--- a/content/browser/web_contents/web_contents_impl.cc
++++ b/content/browser/web_contents/web_contents_impl.cc
+@@ -1464,7 +1464,7 @@ void WebContentsImpl::CreateNewWidget(int render_process_id,
+ // Save the created widget associated with the route so we can show it later.
+ pending_widget_views_[route_id] = widget_view;
+
+-#if defined(OS_MACOSX)
++#if defined(OS_MACOSX) && !defined(TOOLKIT_QT)
+ // A RenderWidgetHostViewMac has lifetime scoped to the view. We'll retain it
+ // to allow it to survive the trip without being hosted.
+ base::mac::NSObjectRetain(widget_view->GetNativeView());
+@@ -1529,7 +1529,7 @@ void WebContentsImpl::ShowCreatedWidget(int route_id,
+ // used to implement Pepper Flash fullscreen.
+ render_widget_host_impl->set_allow_privileged_mouse_lock(is_fullscreen);
+
+-#if defined(OS_MACOSX)
++#if defined(OS_MACOSX) && !defined(TOOLKIT_QT)
+ // A RenderWidgetHostViewMac has lifetime scoped to the view. Now that it's
+ // properly embedded (or purposefully ignored) we can release the retain we
+ // took in CreateNewWidget().
+diff --git a/content/renderer/render_thread_impl.cc b/content/renderer/render_thread_impl.cc
+index e910b8b..609b965 100644
+--- a/content/renderer/render_thread_impl.cc
++++ b/content/renderer/render_thread_impl.cc
+@@ -314,7 +314,7 @@ void RenderThreadImpl::Init() {
+ v8::V8::SetCreateHistogramFunction(CreateHistogram);
+ v8::V8::SetAddHistogramSampleFunction(AddHistogramSample);
+
+-#if defined(OS_MACOSX) || defined(OS_ANDROID)
++#if (defined(OS_MACOSX) || defined(OS_ANDROID)) && !defined(TOOLKIT_QT)
+ // On Mac and Android, the select popups are rendered by the browser.
+ blink::WebView::setUseExternalPopupMenus(true);
+ #endif
diff --git a/patches/chromium/third_party/WebKit/0005-Use-compositor-with-select-popups.patch b/patches/chromium/third_party/WebKit/0005-Use-compositor-with-select-popups.patch
new file mode 100644
index 000000000..d84001ce0
--- /dev/null
+++ b/patches/chromium/third_party/WebKit/0005-Use-compositor-with-select-popups.patch
@@ -0,0 +1,238 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: "jbauman@chromium.org" <jbauman@chromium.org>
+Date: Wed, 29 Jan 2014 00:14:45 +0000
+Subject: Use compositor with select popups.
+
+BUG=271575
+
+Review URL: https://codereview.chromium.org/132173005
+
+git-svn-id: svn://svn.chromium.org/blink/trunk@165977 bbb929c8-8fbe-4397-9dbb-9b2b20218538
+
+Change-Id: I78b3354b1040b193c984b82db51c90b8183ebd24
+Reviewed-by: Jocelyn Turcotte <jocelyn.turcotte@digia.com>
+---
+ Source/web/WebPopupMenuImpl.cpp | 69 +++++++++++++++++++++++++++++++++++++++++
+ Source/web/WebPopupMenuImpl.h | 59 +++++++++++++++++++++--------------
+ 2 files changed, 104 insertions(+), 24 deletions(-)
+
+diff --git a/Source/web/WebPopupMenuImpl.cpp b/Source/web/WebPopupMenuImpl.cpp
+index 05c1d05..e8adfd7 100644
+--- a/Source/web/WebPopupMenuImpl.cpp
++++ b/Source/web/WebPopupMenuImpl.cpp
+@@ -49,6 +49,10 @@
+ #include "platform/graphics/GraphicsContext.h"
+ #include "platform/graphics/skia/SkiaUtils.h"
+ #include "platform/scroll/FramelessScrollView.h"
++#include "public/platform/Platform.h"
++#include "public/platform/WebCompositorSupport.h"
++#include "public/platform/WebContentLayer.h"
++#include "public/platform/WebLayerTreeView.h"
+ #include "public/platform/WebRect.h"
+ #include <skia/ext/platform_canvas.h>
+
+@@ -68,6 +72,10 @@ WebPopupMenu* WebPopupMenu::create(WebWidgetClient* client)
+
+ WebPopupMenuImpl::WebPopupMenuImpl(WebWidgetClient* client)
+ : m_client(client)
++ , m_layerTreeView(0)
++ , m_isAcceleratedCompositingActive(false)
++ // Set to impossible point so we always get the first mouse position.
++ , m_lastMousePosition(WebPoint(-1, -1))
+ , m_widget(0)
+ {
+ // Set to impossible point so we always get the first mouse position.
+@@ -80,6 +88,12 @@ WebPopupMenuImpl::~WebPopupMenuImpl()
+ m_widget->setClient(0);
+ }
+
++void WebPopupMenuImpl::willCloseLayerTreeView()
++{
++ enterForceCompositingMode(false);
++ m_layerTreeView = 0;
++}
++
+ void WebPopupMenuImpl::initialize(FramelessScrollView* widget, const WebRect& bounds)
+ {
+ m_widget = widget;
+@@ -174,6 +188,9 @@ void WebPopupMenuImpl::resize(const WebSize& newSize)
+ WebRect damagedRect(0, 0, m_size.width, m_size.height);
+ m_client->didInvalidateRect(damagedRect);
+ }
++
++ if (m_rootLayer)
++ m_rootLayer->layer()->setBounds(newSize);
+ }
+
+ void WebPopupMenuImpl::willEndLiveResize()
+@@ -188,6 +205,54 @@ void WebPopupMenuImpl::layout()
+ {
+ }
+
++void WebPopupMenuImpl::enterForceCompositingMode(bool enter)
++{
++ if (m_isAcceleratedCompositingActive == enter)
++ return;
++
++ if (!enter) {
++ m_isAcceleratedCompositingActive = false;
++ m_client->didDeactivateCompositor();
++ } else if (m_layerTreeView) {
++ m_isAcceleratedCompositingActive = true;
++ m_client->didActivateCompositor(0);
++ } else {
++ TRACE_EVENT0("webkit", "WebPopupMenuImpl::enterForceCompositingMode(true)");
++
++ m_client->initializeLayerTreeView();
++ m_layerTreeView = m_client->layerTreeView();
++ if (m_layerTreeView) {
++ m_layerTreeView->setVisible(true);
++ m_client->didActivateCompositor(0);
++ m_isAcceleratedCompositingActive = true;
++ m_layerTreeView->setDeviceScaleFactor(m_client->deviceScaleFactor());
++ m_rootLayer = adoptPtr(Platform::current()->compositorSupport()->createContentLayer(this));
++ m_rootLayer->layer()->setBounds(m_size);
++ m_layerTreeView->setRootLayer(*m_rootLayer->layer());
++ } else {
++ m_isAcceleratedCompositingActive = false;
++ m_client->didDeactivateCompositor();
++ }
++ }
++}
++
++void WebPopupMenuImpl::didExitCompositingMode()
++{
++ enterForceCompositingMode(false);
++ m_client->didInvalidateRect(IntRect(0, 0, m_size.width, m_size.height));
++}
++
++void WebPopupMenuImpl::paintContents(WebCanvas* canvas, const WebRect& rect, bool, WebFloatRect&)
++{
++ if (!m_widget)
++ return;
++
++ if (!rect.isEmpty()) {
++ GraphicsContext context(canvas);
++ m_widget->paint(&context, rect);
++ }
++}
++
+ void WebPopupMenuImpl::paint(WebCanvas* canvas, const WebRect& rect, PaintOptions)
+ {
+ if (!m_widget)
+@@ -343,6 +408,8 @@ void WebPopupMenuImpl::invalidateContentsAndRootView(const IntRect& paintRect)
+ return;
+ if (m_client)
+ m_client->didInvalidateRect(paintRect);
++ if (m_rootLayer)
++ m_rootLayer->layer()->invalidateRect(FloatRect(paintRect));
+ }
+
+ void WebPopupMenuImpl::invalidateContentsForSlowScroll(const IntRect& updateRect)
+@@ -361,6 +428,8 @@ void WebPopupMenuImpl::scroll(const IntSize& scrollDelta, const IntRect& scrollR
+ int dy = scrollDelta.height();
+ m_client->didScrollRect(dx, dy, clipRect);
+ }
++ if (m_rootLayer)
++ m_rootLayer->layer()->invalidateRect(FloatRect(clipRect));
+ }
+
+ IntPoint WebPopupMenuImpl::screenToRootView(const IntPoint& point) const
+diff --git a/Source/web/WebPopupMenuImpl.h b/Source/web/WebPopupMenuImpl.h
+index e5777be..0384675 100644
+--- a/Source/web/WebPopupMenuImpl.h
++++ b/Source/web/WebPopupMenuImpl.h
+@@ -33,6 +33,7 @@
+
+ #include "WebPopupMenu.h"
+ #include "platform/scroll/FramelessScrollViewClient.h"
++#include "public/platform/WebContentLayerClient.h"
+ #include "public/platform/WebPoint.h"
+ #include "public/platform/WebSize.h"
+ #include "wtf/OwnPtr.h"
+@@ -49,44 +50,50 @@ class Widget;
+ }
+
+ namespace blink {
++class WebContentLayer;
+ class WebGestureEvent;
+ class WebKeyboardEvent;
++class WebLayerTreeView;
+ class WebMouseEvent;
+ class WebMouseWheelEvent;
+ class WebRange;
+ struct WebRect;
+ class WebTouchEvent;
+
+-class WebPopupMenuImpl : public WebPopupMenu,
+- public WebCore::FramelessScrollViewClient,
+- public RefCounted<WebPopupMenuImpl> {
++class WebPopupMenuImpl : public WebPopupMenu, public WebCore::FramelessScrollViewClient, public WebContentLayerClient, public RefCounted<WebPopupMenuImpl> {
+ WTF_MAKE_FAST_ALLOCATED;
+ public:
+ // WebWidget functions:
+- virtual void close() OVERRIDE;
+- virtual WebSize size() OVERRIDE { return m_size; }
+- virtual void willStartLiveResize() OVERRIDE;
+- virtual void resize(const WebSize&) OVERRIDE;
+- virtual void willEndLiveResize() OVERRIDE;
+- virtual void animate(double frameBeginTime) OVERRIDE;
+- virtual void layout() OVERRIDE;
+- virtual void paint(WebCanvas*, const WebRect&, PaintOptions = ReadbackFromCompositorIfAvailable) OVERRIDE;
+- virtual void themeChanged() OVERRIDE;
+- virtual bool handleInputEvent(const WebInputEvent&) OVERRIDE;
+- virtual void mouseCaptureLost() OVERRIDE;
+- virtual void setFocus(bool enable) OVERRIDE;
++ virtual void close() OVERRIDE FINAL;
++ virtual WebSize size() OVERRIDE FINAL { return m_size; }
++ virtual void willStartLiveResize() OVERRIDE FINAL;
++ virtual void resize(const WebSize&) OVERRIDE FINAL;
++ virtual void willEndLiveResize() OVERRIDE FINAL;
++ virtual void animate(double frameBeginTime) OVERRIDE FINAL;
++ virtual void layout() OVERRIDE FINAL;
++ virtual void enterForceCompositingMode(bool enable) OVERRIDE FINAL;
++ virtual void didExitCompositingMode() OVERRIDE FINAL;
++ virtual void paint(WebCanvas*, const WebRect&, PaintOptions = ReadbackFromCompositorIfAvailable) OVERRIDE FINAL;
++ virtual void themeChanged() OVERRIDE FINAL;
++ virtual bool handleInputEvent(const WebInputEvent&) OVERRIDE FINAL;
++ virtual void mouseCaptureLost() OVERRIDE FINAL;
++ virtual void setFocus(bool enable) OVERRIDE FINAL;
+ virtual bool setComposition(
+ const WebString& text,
+ const WebVector<WebCompositionUnderline>& underlines,
+- int selectionStart, int selectionEnd) OVERRIDE;
+- virtual bool confirmComposition() OVERRIDE;
+- virtual bool confirmComposition(ConfirmCompositionBehavior selectionBehavior) OVERRIDE;
+- virtual bool confirmComposition(const WebString& text) OVERRIDE;
+- virtual bool compositionRange(size_t* location, size_t* length) OVERRIDE;
+- virtual bool caretOrSelectionRange(size_t* location, size_t* length) OVERRIDE;
+- virtual void setTextDirection(WebTextDirection) OVERRIDE;
+- virtual bool isAcceleratedCompositingActive() const OVERRIDE { return false; }
+- virtual bool isPopupMenu() const OVERRIDE { return true; }
++ int selectionStart, int selectionEnd) OVERRIDE FINAL;
++ virtual bool confirmComposition() OVERRIDE FINAL;
++ virtual bool confirmComposition(ConfirmCompositionBehavior selectionBehavior) OVERRIDE FINAL;
++ virtual bool confirmComposition(const WebString& text) OVERRIDE FINAL;
++ virtual bool compositionRange(size_t* location, size_t* length) OVERRIDE FINAL;
++ virtual bool caretOrSelectionRange(size_t* location, size_t* length) OVERRIDE FINAL;
++ virtual void setTextDirection(WebTextDirection) OVERRIDE FINAL;
++ virtual bool isAcceleratedCompositingActive() const OVERRIDE FINAL { return false; }
++ virtual bool isPopupMenu() const OVERRIDE FINAL { return true; }
++ virtual void willCloseLayerTreeView() OVERRIDE FINAL;
++
++ // WebContentLayerClient
++ virtual void paintContents(WebCanvas*, const WebRect& clip, bool canPaintLCDTest, WebFloatRect& opaque) OVERRIDE FINAL;
+
+ // WebPopupMenuImpl
+ void initialize(WebCore::FramelessScrollView* widget, const WebRect& bounds);
+@@ -127,6 +134,10 @@ public:
+ WebWidgetClient* m_client;
+ WebSize m_size;
+
++ WebLayerTreeView* m_layerTreeView;
++ OwnPtr<WebContentLayer> m_rootLayer;
++ bool m_isAcceleratedCompositingActive;
++
+ WebPoint m_lastMousePosition;
+
+ // This is a non-owning ref. The popup will notify us via popupClosed()
diff --git a/patches/chromium/third_party/WebKit/0006-Use-compositor-for-page-popups.patch b/patches/chromium/third_party/WebKit/0006-Use-compositor-for-page-popups.patch
new file mode 100644
index 000000000..3b260a8dc
--- /dev/null
+++ b/patches/chromium/third_party/WebKit/0006-Use-compositor-for-page-popups.patch
@@ -0,0 +1,190 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: "jbauman@chromium.org" <jbauman@chromium.org>
+Date: Fri, 21 Feb 2014 00:46:34 +0000
+Subject: Use compositor for page popups.
+
+This is essentially the last user of the legacy 2d path.
+
+BUG=271140
+
+Review URL: https://codereview.chromium.org/171343003
+
+Change-Id: I64911d0d83b9d1d4782dff9b09db1bbcc439da24
+git-svn-id: svn://svn.chromium.org/blink/trunk@167552 bbb929c8-8fbe-4397-9dbb-9b2b20218538
+Reviewed-by: Jocelyn Turcotte <jocelyn.turcotte@digia.com>
+---
+ Source/web/WebPagePopupImpl.cpp | 87 +++++++++++++++++++++++++++++++++++++++++
+ Source/web/WebPagePopupImpl.h | 13 ++++++
+ 2 files changed, 100 insertions(+)
+
+diff --git a/Source/web/WebPagePopupImpl.cpp b/Source/web/WebPagePopupImpl.cpp
+index b129dc6..cadbc14 100644
+--- a/Source/web/WebPagePopupImpl.cpp
++++ b/Source/web/WebPagePopupImpl.cpp
+@@ -138,6 +138,16 @@ private:
+ m_popup->widgetClient()->hasTouchEventHandlers(needsTouchEvents);
+ }
+
++ virtual GraphicsLayerFactory* graphicsLayerFactory() const OVERRIDE
++ {
++ return m_popup->m_webView->graphicsLayerFactory();
++ }
++
++ virtual void attachRootGraphicsLayer(Frame*, GraphicsLayer* graphicsLayer) OVERRIDE
++ {
++ m_popup->setRootGraphicsLayer(graphicsLayer);
++ }
++
+ WebPagePopupImpl* m_popup;
+ };
+
+@@ -157,6 +167,10 @@ bool PagePopupFeaturesClient::isEnabled(Document*, ContextFeatures::FeatureType
+ WebPagePopupImpl::WebPagePopupImpl(WebWidgetClient* client)
+ : m_widgetClient(client)
+ , m_closing(false)
++ , m_layerTreeView(0)
++ , m_rootLayer(0)
++ , m_rootGraphicsLayer(0)
++ , m_isAcceleratedCompositingActive(false)
+ {
+ ASSERT(client);
+ }
+@@ -224,6 +238,49 @@ void WebPagePopupImpl::destroyPage()
+ m_page.clear();
+ }
+
++void WebPagePopupImpl::setRootGraphicsLayer(GraphicsLayer* layer)
++{
++ m_rootGraphicsLayer = layer;
++ m_rootLayer = layer ? layer->platformLayer() : 0;
++
++ setIsAcceleratedCompositingActive(layer);
++ if (m_layerTreeView) {
++ if (m_rootLayer) {
++ m_layerTreeView->setRootLayer(*m_rootLayer);
++ } else {
++ m_layerTreeView->clearRootLayer();
++ }
++ }
++}
++
++void WebPagePopupImpl::setIsAcceleratedCompositingActive(bool enter)
++{
++ if (m_isAcceleratedCompositingActive == enter)
++ return;
++
++ if (!enter) {
++ m_isAcceleratedCompositingActive = false;
++ m_widgetClient->didDeactivateCompositor();
++ } else if (m_layerTreeView) {
++ m_isAcceleratedCompositingActive = true;
++ m_widgetClient->didActivateCompositor(0);
++ } else {
++ TRACE_EVENT0("webkit", "WebPagePopupImpl::setIsAcceleratedCompositingActive(true)");
++
++ m_widgetClient->initializeLayerTreeView();
++ m_layerTreeView = m_widgetClient->layerTreeView();
++ if (m_layerTreeView) {
++ m_layerTreeView->setVisible(true);
++ m_widgetClient->didActivateCompositor(0);
++ m_isAcceleratedCompositingActive = true;
++ m_layerTreeView->setDeviceScaleFactor(m_widgetClient->deviceScaleFactor());
++ } else {
++ m_isAcceleratedCompositingActive = false;
++ m_widgetClient->didDeactivateCompositor();
++ }
++ }
++}
++
+ WebSize WebPagePopupImpl::size()
+ {
+ return m_popupClient->contentSize();
+@@ -234,6 +291,36 @@ void WebPagePopupImpl::animate(double)
+ PageWidgetDelegate::animate(m_page.get(), monotonicallyIncreasingTime());
+ }
+
++void WebPagePopupImpl::enterForceCompositingMode(bool enter)
++{
++ if (m_page->settings().forceCompositingMode() == enter)
++ return;
++
++ TRACE_EVENT1("webkit", "WebPagePopupImpl::enterForceCompositingMode", "enter", enter);
++ m_page->settings().setForceCompositingMode(enter);
++ if (enter) {
++ if (!m_page)
++ return;
++ Frame* mainFrame = m_page->mainFrame();
++ if (!mainFrame)
++ return;
++ mainFrame->view()->updateCompositingLayersAfterStyleChange();
++ }
++}
++
++void WebPagePopupImpl::didExitCompositingMode()
++{
++ setIsAcceleratedCompositingActive(false);
++ m_widgetClient->didInvalidateRect(IntRect(0, 0, size().width, size().height));
++ m_page->mainFrame()->document()->setNeedsStyleRecalc(SubtreeStyleChange);
++}
++
++void WebPagePopupImpl::willCloseLayerTreeView()
++{
++ setIsAcceleratedCompositingActive(false);
++ m_layerTreeView = 0;
++}
++
+ void WebPagePopupImpl::layout()
+ {
+ PageWidgetDelegate::layout(m_page.get());
+diff --git a/Source/web/WebPagePopupImpl.h b/Source/web/WebPagePopupImpl.h
+index 660c47f..050f3ae 100644
+--- a/Source/web/WebPagePopupImpl.h
++++ b/Source/web/WebPagePopupImpl.h
+@@ -38,6 +38,7 @@
+ #include "wtf/RefCounted.h"
+
+ namespace WebCore {
++class GraphicsLayer;
+ class Page;
+ class PagePopupClient;
+ class PlatformKeyboardEvent;
+@@ -46,6 +47,8 @@ class PlatformKeyboardEvent;
+ namespace blink {
+
+ class PagePopupChromeClient;
++class WebLayerTreeView;
++class WebLayer;
+ class WebViewImpl;
+
+ class WebPagePopupImpl : public WebPagePopup,
+@@ -68,6 +71,9 @@ private:
+ virtual WebSize size() OVERRIDE;
+ virtual void animate(double) OVERRIDE;
+ virtual void layout() OVERRIDE;
++ virtual void enterForceCompositingMode(bool enter) OVERRIDE;
++ virtual void didExitCompositingMode() OVERRIDE;
++ virtual void willCloseLayerTreeView() OVERRIDE;
+ virtual void paint(WebCanvas*, const WebRect&, PaintOptions = ReadbackFromCompositorIfAvailable) OVERRIDE;
+ virtual void resize(const WebSize&) OVERRIDE;
+ virtual void close() OVERRIDE;
+@@ -83,6 +89,8 @@ private:
+ explicit WebPagePopupImpl(WebWidgetClient*);
+ bool initializePage();
+ void destroyPage();
++ void setRootGraphicsLayer(WebCore::GraphicsLayer*);
++ void setIsAcceleratedCompositingActive(bool enter);
+
+ WebWidgetClient* m_widgetClient;
+ WebRect m_windowRectInScreen;
+@@ -92,6 +100,11 @@ private:
+ WebCore::PagePopupClient* m_popupClient;
+ bool m_closing;
+
++ WebLayerTreeView* m_layerTreeView;
++ WebLayer* m_rootLayer;
++ WebCore::GraphicsLayer* m_rootGraphicsLayer;
++ bool m_isAcceleratedCompositingActive;
++
+ friend class WebPagePopup;
+ friend class PagePopupChromeClient;
+ };
diff --git a/patches/chromium/v8/0001-Prevent-V8-from-overridding-the-RuntimeLibrary-cflag.patch b/patches/chromium/v8/0001-Prevent-V8-from-overridding-the-RuntimeLibrary-cflag.patch
new file mode 100644
index 000000000..0911d3abd
--- /dev/null
+++ b/patches/chromium/v8/0001-Prevent-V8-from-overridding-the-RuntimeLibrary-cflag.patch
@@ -0,0 +1,55 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Jocelyn Turcotte <jocelyn.turcotte@digia.com>
+Date: Tue, 15 Apr 2014 14:22:52 +0200
+Subject: Prevent V8 from overridding the RuntimeLibrary cflags
+
+Since we're never going to statically link to the runtime library on
+Windows (unlink Chromium when built as a monolitic chrome.exe), make
+sure that our /M flag setting is also properly set for V8.
+
+Change-Id: Ia17073f6811f43aa264d08c270b1ab841a09408f
+Reviewed-by: Michael Bruning <michael.bruning@digia.com>
+---
+ build/toolchain.gypi | 8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/build/toolchain.gypi b/build/toolchain.gypi
+index 99f357a..2dc3c04 100644
+--- a/build/toolchain.gypi
++++ b/build/toolchain.gypi
+@@ -444,7 +444,7 @@
+ ['v8_optimized_debug==0', {
+ 'Optimization': '0',
+ 'conditions': [
+- ['component=="shared_library"', {
++ ['component=="shared_library" or use_qt==1', {
+ 'RuntimeLibrary': '3', # /MDd
+ }, {
+ 'RuntimeLibrary': '1', # /MTd
+@@ -459,7 +459,7 @@
+ 'StringPooling': 'true',
+ 'BasicRuntimeChecks': '0',
+ 'conditions': [
+- ['component=="shared_library"', {
++ ['component=="shared_library" or use_qt==1', {
+ 'RuntimeLibrary': '3', # /MDd
+ }, {
+ 'RuntimeLibrary': '1', # /MTd
+@@ -474,7 +474,7 @@
+ 'StringPooling': 'true',
+ 'BasicRuntimeChecks': '0',
+ 'conditions': [
+- ['component=="shared_library"', {
++ ['component=="shared_library" or use_qt==1', {
+ 'RuntimeLibrary': '3', #/MDd
+ }, {
+ 'RuntimeLibrary': '1', #/MTd
+@@ -666,7 +666,7 @@
+ 'FavorSizeOrSpeed': '0',
+ 'StringPooling': 'true',
+ 'conditions': [
+- ['component=="shared_library"', {
++ ['component=="shared_library" or use_qt==1', {
+ 'RuntimeLibrary': '2', #/MD
+ }, {
+ 'RuntimeLibrary': '0', #/MT
diff --git a/patches/patch-chromium.sh b/patches/patch-chromium.sh
index 0f204fed4..d210d2b4d 100755
--- a/patches/patch-chromium.sh
+++ b/patches/patch-chromium.sh
@@ -57,7 +57,8 @@ for MODULE in \
/third_party/libjingle/source/talk \
/third_party/libvpx \
/tools/gyp \
- /tools/grit
+ /tools/grit \
+ /v8
do
cd $CHROMIUM_SRC_DIR$MODULE
echo "Entering $PWD"
diff --git a/patches/update-patches.sh b/patches/update-patches.sh
index feef41267..7fa303d52 100755
--- a/patches/update-patches.sh
+++ b/patches/update-patches.sh
@@ -50,7 +50,8 @@ for MODULE in \
/third_party/libjingle/source/talk \
/third_party/libvpx \
/tools/gyp \
- /tools/grit
+ /tools/grit \
+ /v8
do
cd $THIRDPARTY_UPSTREAM_CHROMIUM_DIR$MODULE
echo "Entering $PWD"
diff --git a/src/3rdparty b/src/3rdparty
-Subproject a6014652040e76de08e643b49b69fc97cb5bfd6
+Subproject 743a6413f3cc0a621865a81f06c6d7bed7b662c