Merge pull request #313 from electron/upgrade-to-chromium-59

Upgrade to Chromium 59
This commit is contained in:
John Kleinschmidt 2017-08-16 09:59:37 -04:00 коммит произвёл GitHub
Родитель f5deac7885 349396d62b
Коммит 2a875ef3a1
55 изменённых файлов: 1154 добавлений и 712 удалений

8
.circleci/config.yml Normal file
Просмотреть файл

@ -0,0 +1,8 @@
version: 2.0
jobs:
build:
docker:
- image: electronbuilds/libchromiumcontent:0.0.1
steps:
- checkout
- run: script/cibuild

3
.dockerignore Normal file
Просмотреть файл

@ -0,0 +1,3 @@
src
dist
.git

3
.gitattributes поставляемый Normal file
Просмотреть файл

@ -0,0 +1,3 @@
# Don't mess up with CRLF line ending on Windows
*.py text eol=lf
*.patch text eol=lf

1
.gitignore поставляемый
Просмотреть файл

@ -9,3 +9,4 @@
.gclient
.gclient_entries
_gclient_src_*
s3credentials

14
Dockerfile Normal file
Просмотреть файл

@ -0,0 +1,14 @@
FROM ubuntu:16.04
# Set up TEMP directory
ENV TEMP=/tmp
RUN chmod a+rwx /tmp
# Set up HOME directory
ENV HOME=/home
RUN chmod a+rwx /home
# Install Linux packages
ADD script/docker-install-build-deps.sh /setup/install-build-deps.sh
RUN apt-get update && apt-get -y --force-yes install lsb-release locales
RUN /setup/install-build-deps.sh --syms --no-prompt --no-chromeos-fonts

Просмотреть файл

@ -1 +1 @@
58.0.3029.110
59.0.3071.115

Просмотреть файл

@ -28,6 +28,7 @@ group("targets") {
"//ui/content_accelerators",
"//ui/display",
"//ui/display/util",
"//ui/latency",
"//ui/views",
"//ui/views/controls/webview",
]
@ -108,7 +109,7 @@ if (is_electron_build && is_component_build) {
static_library("fx_zlib") {
complete_static_lib = true
deps = [ "//third_party/pdfium/third_party:fx_zlib" ]
deps = [ "//third_party/zlib:zlib" ]
}
static_library("libjpeg") {

Просмотреть файл

@ -6,4 +6,3 @@ enable_widevine = true
proprietary_codecs = false
is_component_ffmpeg = true
ffmpeg_branding = "Chromium"
use_gold = false

Просмотреть файл

@ -8,4 +8,3 @@ enable_widevine = true
proprietary_codecs = true
is_component_ffmpeg = true
ffmpeg_branding = "Chrome"
use_gold = false

Просмотреть файл

@ -8,4 +8,3 @@ enable_widevine = true
proprietary_codecs = true
is_component_ffmpeg = true
ffmpeg_branding = "Chrome"
use_gold = false

Просмотреть файл

@ -115,6 +115,7 @@ with open(args.out, 'w') as out:
"cc/base",
"cc/blink",
"cc/cc",
"cc/debug",
"cc/ipc",
"cc/paint",
"cc/proto",
@ -129,6 +130,7 @@ with open(args.out, 'w') as out:
"components/cdm",
"components/cookie_config",
"components/crash/core/common",
"components/device_event_log",
"components/discardable_memory",
"components/display_compositor",
"components/filesystem",
@ -154,6 +156,7 @@ with open(args.out, 'w') as out:
"components/tracing/tracing",
"components/url_formatter",
"components/variations",
"components/viz/frame_sinks/frame_sinks",
"components/webcrypto",
"components/webmessaging",
])
@ -194,8 +197,11 @@ with open(args.out, 'w') as out:
"obj_services",
[
"services/catalog",
"services/data_decoder",
"services/device",
"services/file",
"services/resource_coordinator",
"services/service_manager/embedder",
"services/service_manager/public/cpp/sources",
"services/service_manager/public/interfaces",
"services/service_manager/runner",
@ -222,11 +228,13 @@ with open(args.out, 'w') as out:
"obj_angle",
[
"third_party/angle/angle_common",
"third_party/angle/angle_gpu_info_util",
"third_party/angle/angle_image_util",
"third_party/angle/libANGLE",
"third_party/angle/libEGL",
"third_party/angle/libGLESv2",
"third_party/angle/preprocessor",
"third_party/angle/src/third_party/libXNVCtrl",
"third_party/angle/translator",
"third_party/angle/translator_lib",
])
@ -235,6 +243,7 @@ with open(args.out, 'w') as out:
out,
"obj_pdfium",
[
"third_party/freetype",
"third_party/pdfium",
])
@ -249,6 +258,7 @@ with open(args.out, 'w') as out:
"third_party/WebKit/Source/platform/loader",
"third_party/WebKit/Source/platform/mojo",
"third_party/WebKit/Source/platform/platform",
"third_party/WebKit/Source/platform/wtf/platform_wtf",
"third_party/WebKit/Source/web",
"third_party/WebKit/Source/wtf",
])
@ -288,7 +298,4 @@ with open(args.out, 'w') as out:
"third_party/icu",
])
os.environ['CHROMIUMCONTENT_2ND_PASS'] = '1'
subprocess.check_call(['ninja', 'chromiumcontent:libs'])
open(args.stamp, 'w')

Просмотреть файл

@ -1,5 +1,5 @@
diff --git a/third_party/WebKit/Source/core/paint/ThemePainterMac.mm b/third_party/WebKit/Source/core/paint/ThemePainterMac.mm
index a8f507a..5b54b7d 100644
index 79c9b5586cd7..820762250150 100644
--- a/third_party/WebKit/Source/core/paint/ThemePainterMac.mm
+++ b/third_party/WebKit/Source/core/paint/ThemePainterMac.mm
@@ -43,6 +43,7 @@
@ -18,32 +18,32 @@ index a8f507a..5b54b7d 100644
namespace blink {
@@ -72,9 +74,11 @@ void _NSDrawCarbonThemeListBox(NSRect frame,
@@ -73,9 +75,11 @@ bool ThemePainterMac::PaintTextField(const LayoutObject& o,
// behavior change while remaining a fragile solution.
// https://bugs.chromium.org/p/chromium/issues/detail?id=658085#c3
if (!useNSTextFieldCell) {
if (!use_ns_text_field_cell) {
+#ifndef MAS_BUILD
_NSDrawCarbonThemeBezel(
r, LayoutTheme::isEnabled(o) && !LayoutTheme::isReadOnlyControl(o),
r, LayoutTheme::IsEnabled(o) && !LayoutTheme::IsReadOnlyControl(o),
YES);
+#endif
return false;
}
@@ -159,9 +163,11 @@ void _NSDrawCarbonThemeListBox(NSRect frame,
const PaintInfo& paintInfo,
@@ -160,9 +164,11 @@ bool ThemePainterMac::PaintTextArea(const LayoutObject& o,
const PaintInfo& paint_info,
const IntRect& r) {
LocalCurrentGraphicsContext localContext(paintInfo.context, r);
LocalCurrentGraphicsContext local_context(paint_info.context, r);
+#ifndef MAS_BUILD
_NSDrawCarbonThemeListBox(
r, LayoutTheme::isEnabled(o) && !LayoutTheme::isReadOnlyControl(o), YES,
r, LayoutTheme::IsEnabled(o) && !LayoutTheme::IsReadOnlyControl(o), YES,
YES);
+#endif
return false;
}
diff --git a/third_party/WebKit/Source/platform/mac/KillRingMac.mm b/third_party/WebKit/Source/platform/mac/KillRingMac.mm
index 1e74ced..6fde87a 100644
index acf60f09fdb9..6376120a954f 100644
--- a/third_party/WebKit/Source/platform/mac/KillRingMac.mm
+++ b/third_party/WebKit/Source/platform/mac/KillRingMac.mm
@@ -27,6 +27,7 @@
@ -54,38 +54,38 @@ index 1e74ced..6fde87a 100644
extern "C" {
// Kill ring calls. Would be better to use NSKillRing.h, but that's not
@@ -39,38 +40,53 @@
@@ -39,38 +40,53 @@ NSString* _NSYankFromKillRing();
void _NSNewKillRingSequence();
void _NSSetKillRingToYankedState();
}
+#endif
static void initializeKillRingIfNeeded() {
static bool initializedKillRing = false;
if (!initializedKillRing) {
initializedKillRing = true;
static void InitializeKillRingIfNeeded() {
static bool initialized_kill_ring = false;
if (!initialized_kill_ring) {
initialized_kill_ring = true;
+#ifndef MAS_BUILD
_NSInitializeKillRing();
+#endif
}
}
void KillRing::append(const String& string) {
initializeKillRingIfNeeded();
void KillRing::Append(const String& string) {
InitializeKillRingIfNeeded();
+#ifndef MAS_BUILD
_NSAppendToKillRing(string);
+#endif
}
void KillRing::prepend(const String& string) {
initializeKillRingIfNeeded();
void KillRing::Prepend(const String& string) {
InitializeKillRingIfNeeded();
+#ifndef MAS_BUILD
_NSPrependToKillRing(string);
+#endif
}
String KillRing::yank() {
initializeKillRingIfNeeded();
String KillRing::Yank() {
InitializeKillRingIfNeeded();
+#ifndef MAS_BUILD
return _NSYankFromKillRing();
+#else
@ -93,15 +93,15 @@ index 1e74ced..6fde87a 100644
+#endif
}
void KillRing::startNewSequence() {
initializeKillRingIfNeeded();
void KillRing::StartNewSequence() {
InitializeKillRingIfNeeded();
+#ifndef MAS_BUILD
_NSNewKillRingSequence();
+#endif
}
void KillRing::setToYankedState() {
initializeKillRingIfNeeded();
void KillRing::SetToYankedState() {
InitializeKillRingIfNeeded();
+#ifndef MAS_BUILD
_NSSetKillRingToYankedState();
+#endif

Просмотреть файл

@ -1,5 +1,5 @@
diff --git a/content/browser/accessibility/browser_accessibility_cocoa.h b/content/browser/accessibility/browser_accessibility_cocoa.h
index 39d89e1..0f7da00 100644
index 39d89e118301..0f7da0037cc6 100644
--- a/content/browser/accessibility/browser_accessibility_cocoa.h
+++ b/content/browser/accessibility/browser_accessibility_cocoa.h
@@ -87,7 +87,9 @@
@ -30,10 +30,10 @@ index 39d89e1..0f7da00 100644
// is concerned.
@property(nonatomic, readonly) NSString* subrole;
diff --git a/content/browser/accessibility/browser_accessibility_cocoa.mm b/content/browser/accessibility/browser_accessibility_cocoa.mm
index 848c362..b9d2c5e 100644
index 89fe4d98eb76..f0dfa3a056ee 100644
--- a/content/browser/accessibility/browser_accessibility_cocoa.mm
+++ b/content/browser/accessibility/browser_accessibility_cocoa.mm
@@ -111,6 +111,7 @@
@@ -111,6 +111,7 @@ NSDictionary* attributeToMethodNameMap = nil;
// VoiceOver uses -1 to mean "no limit" for AXResultsLimit.
const int kAXResultsLimitNoLimit = -1;
@ -41,7 +41,7 @@ index 848c362..b9d2c5e 100644
extern "C" {
// The following are private accessibility APIs required for cursor navigation
@@ -315,6 +316,7 @@ void AddMisspelledTextAttributes(
@@ -315,6 +316,7 @@ NSAttributedString* GetAttributedTextForTextMarkerRange(
AddMisspelledTextAttributes(text_only_objects, attributed_text);
return [attributed_text attributedSubstringFromRange:range];
}
@ -49,7 +49,7 @@ index 848c362..b9d2c5e 100644
// Returns an autoreleased copy of the AXNodeData's attribute.
NSString* NSStringForStringAttribute(
@@ -555,7 +557,9 @@ + (void)initialize {
@@ -555,7 +557,9 @@ NSString* const NSAccessibilityRequiredAttribute = @"AXRequired";
{NSAccessibilityDropEffectsAttribute, @"dropEffects"},
{NSAccessibilityDOMIdentifierAttribute, @"domIdentifier"},
{NSAccessibilityEnabledAttribute, @"enabled"},
@ -59,7 +59,7 @@ index 848c362..b9d2c5e 100644
{NSAccessibilityExpandedAttribute, @"expanded"},
{NSAccessibilityFocusedAttribute, @"focused"},
{NSAccessibilityGrabbedAttribute, @"grabbed"},
@@ -583,13 +587,17 @@ + (void)initialize {
@@ -583,13 +587,17 @@ NSString* const NSAccessibilityRequiredAttribute = @"AXRequired";
{NSAccessibilityRowsAttribute, @"rows"},
// TODO(aboxhall): expose
// NSAccessibilityServesAsTitleForUIElementsAttribute
@ -77,7 +77,7 @@ index 848c362..b9d2c5e 100644
{NSAccessibilitySizeAttribute, @"size"},
{NSAccessibilitySortDirectionAttribute, @"sortDirection"},
{NSAccessibilitySubroleAttribute, @"subrole"},
@@ -964,6 +972,7 @@ - (NSNumber*)enabled {
@@ -964,6 +972,7 @@ NSString* const NSAccessibilityRequiredAttribute = @"AXRequired";
!GetState(browserAccessibility_, ui::AX_STATE_DISABLED)];
}
@ -85,7 +85,7 @@ index 848c362..b9d2c5e 100644
// Returns a text marker that points to the last character in the document that
// can be selected with VoiceOver.
- (id)endTextMarker {
@@ -975,6 +984,7 @@ - (id)endTextMarker {
@@ -975,6 +984,7 @@ NSString* const NSAccessibilityRequiredAttribute = @"AXRequired";
AXPlatformPositionInstance position = root->CreatePositionAt(0);
return CreateTextMarker(position->CreatePositionAtEndOfAnchor());
}
@ -93,7 +93,7 @@ index 848c362..b9d2c5e 100644
- (NSNumber*)expanded {
if (![self instanceActive])
@@ -1667,6 +1677,7 @@ - (NSValue*)selectedTextRange {
@@ -1678,6 +1688,7 @@ NSString* const NSAccessibilityRequiredAttribute = @"AXRequired";
return [NSValue valueWithRange:NSMakeRange(selStart, selLength)];
}
@ -101,7 +101,7 @@ index 848c362..b9d2c5e 100644
- (id)selectedTextMarkerRange {
if (![self instanceActive])
return nil;
@@ -1698,6 +1709,7 @@ - (id)selectedTextMarkerRange {
@@ -1709,6 +1720,7 @@ NSString* const NSAccessibilityRequiredAttribute = @"AXRequired";
anchorAffinity, *focusObject,
focusOffset, focusAffinity));
}
@ -109,7 +109,7 @@ index 848c362..b9d2c5e 100644
- (NSValue*)size {
if (![self instanceActive])
@@ -1730,6 +1742,7 @@ - (NSString*)sortDirection {
@@ -1741,6 +1753,7 @@ NSString* const NSAccessibilityRequiredAttribute = @"AXRequired";
return nil;
}
@ -117,7 +117,7 @@ index 848c362..b9d2c5e 100644
// Returns a text marker that points to the first character in the document that
// can be selected with VoiceOver.
- (id)startTextMarker {
@@ -1741,6 +1754,7 @@ - (id)startTextMarker {
@@ -1752,6 +1765,7 @@ NSString* const NSAccessibilityRequiredAttribute = @"AXRequired";
AXPlatformPositionInstance position = root->CreatePositionAt(0);
return CreateTextMarker(position->CreatePositionAtStartOfAnchor());
}
@ -125,7 +125,7 @@ index 848c362..b9d2c5e 100644
// Returns a subrole based upon the role.
- (NSString*) subrole {
@@ -2013,10 +2027,12 @@ - (NSAttributedString*)attributedValueForRange:(NSRange)range {
@@ -2024,10 +2038,12 @@ NSString* const NSAccessibilityRequiredAttribute = @"AXRequired";
NSString* value = base::SysUTF16ToNSString(browserAccessibility_->GetValue());
NSMutableAttributedString* attributedValue =
[[[NSMutableAttributedString alloc] initWithString:value] autorelease];
@ -138,7 +138,7 @@ index 848c362..b9d2c5e 100644
return [attributedValue attributedSubstringFromRange:range];
}
@@ -2136,6 +2152,7 @@ - (id)accessibilityAttributeValue:(NSString*)attribute
@@ -2147,6 +2163,7 @@ NSString* const NSAccessibilityRequiredAttribute = @"AXRequired";
return nil;
}
@ -146,7 +146,7 @@ index 848c362..b9d2c5e 100644
if ([attribute isEqualToString:@"AXUIElementForTextMarker"]) {
AXPlatformPositionInstance position =
CreatePositionFromTextMarker(parameter);
@@ -2297,6 +2314,7 @@ - (id)accessibilityAttributeValue:(NSString*)attribute
@@ -2308,6 +2325,7 @@ NSString* const NSAccessibilityRequiredAttribute = @"AXRequired";
NSString* text = GetTextForTextMarkerRange(parameter);
return [NSNumber numberWithInt:[text length]];
}
@ -154,7 +154,7 @@ index 848c362..b9d2c5e 100644
if ([attribute isEqualToString:
NSAccessibilityBoundsForRangeParameterizedAttribute]) {
@@ -2334,6 +2352,7 @@ - (id)accessibilityAttributeValue:(NSString*)attribute
@@ -2345,6 +2363,7 @@ NSString* const NSAccessibilityRequiredAttribute = @"AXRequired";
return nil;
}
@ -162,7 +162,7 @@ index 848c362..b9d2c5e 100644
if ([attribute isEqualToString:
NSAccessibilityLineTextMarkerRangeForTextMarkerParameterizedAttribute]) {
AXPlatformPositionInstance position =
@@ -2411,6 +2430,7 @@ AXPlatformRange range(position->CreatePreviousLineStartPosition(),
@@ -2422,6 +2441,7 @@ NSString* const NSAccessibilityRequiredAttribute = @"AXRequired";
return @(child->GetIndexInParent());
}
@ -171,10 +171,10 @@ index 848c362..b9d2c5e 100644
return nil;
}
diff --git a/content/browser/accessibility/browser_accessibility_manager_mac.mm b/content/browser/accessibility/browser_accessibility_manager_mac.mm
index 37dd8fa..1e701f9 100644
index c6b659b777bc..fe03cb11f7d3 100644
--- a/content/browser/accessibility/browser_accessibility_manager_mac.mm
+++ b/content/browser/accessibility/browser_accessibility_manager_mac.mm
@@ -93,8 +93,10 @@
@@ -93,8 +93,10 @@ NSString* const NSAccessibilityTextSelectionGranularity =
@"AXTextSelectionGranularity";
NSString* const NSAccessibilityTextSelectionChangedFocus =
@"AXTextSelectionChangedFocus";
@ -185,7 +185,7 @@ index 37dd8fa..1e701f9 100644
NSString* const NSAccessibilityTextChangeElement = @"AXTextChangeElement";
NSString* const NSAccessibilityTextEditType = @"AXTextEditType";
NSString* const NSAccessibilityTextChangeValue = @"AXTextChangeValue";
@@ -427,11 +429,13 @@
@@ -439,11 +441,13 @@ NSDictionary* BrowserAccessibilityManagerMac::
[user_info setObject:native_focus_object
forKey:NSAccessibilityTextChangeElement];
@ -200,7 +200,7 @@ index 37dd8fa..1e701f9 100644
}
diff --git a/content/common/sandbox_mac.mm b/content/common/sandbox_mac.mm
index 2c21995..9fee827 100644
index 2c219956f05a..9fee8277e081 100644
--- a/content/common/sandbox_mac.mm
+++ b/content/common/sandbox_mac.mm
@@ -41,11 +41,13 @@
@ -217,7 +217,7 @@ index 2c21995..9fee827 100644
namespace content {
namespace {
@@ -306,6 +308,7 @@ NOINLINE void FatalStringQuoteException(const std::string& str) {
@@ -306,6 +308,7 @@ void Sandbox::SandboxWarmup(int sandbox_type) {
}
if (sandbox_type == SANDBOX_TYPE_RENDERER) {
@ -225,7 +225,7 @@ index 2c21995..9fee827 100644
// Now disconnect from WindowServer, after all objects have been warmed up.
// Shutting down the connection requires connecting to WindowServer,
// so do this before actually engaging the sandbox. This may cause two log
@@ -318,6 +321,7 @@ NOINLINE void FatalStringQuoteException(const std::string& str) {
@@ -318,6 +321,7 @@ void Sandbox::SandboxWarmup(int sandbox_type) {
// launchservicesd to get an ASN. By setting this flag, HIServices skips
// that.
SetApplicationIsDaemon(true);
@ -234,7 +234,7 @@ index 2c21995..9fee827 100644
}
diff --git a/net/dns/dns_config_service_posix.cc b/net/dns/dns_config_service_posix.cc
index c9c9d92..2938808 100644
index c9c9d9231af0..2938808c4db0 100644
--- a/net/dns/dns_config_service_posix.cc
+++ b/net/dns/dns_config_service_posix.cc
@@ -218,6 +218,7 @@ class DnsConfigServicePosix::Watcher {
@ -254,7 +254,7 @@ index c9c9d92..2938808 100644
}
diff --git a/sandbox/mac/sandbox_compiler.cc b/sandbox/mac/sandbox_compiler.cc
index e524aa7..718d3f9 100644
index e524aa7b8510..718d3f963da5 100644
--- a/sandbox/mac/sandbox_compiler.cc
+++ b/sandbox/mac/sandbox_compiler.cc
@@ -28,6 +28,7 @@ bool SandboxCompiler::InsertStringParam(const std::string& key,
@ -274,10 +274,10 @@ index e524aa7..718d3f9 100644
}
diff --git a/ui/views/cocoa/bridged_native_widget.mm b/ui/views/cocoa/bridged_native_widget.mm
index 2432960..0fc88af 100644
index b79029c300d7..f0d94dacc928 100644
--- a/ui/views/cocoa/bridged_native_widget.mm
+++ b/ui/views/cocoa/bridged_native_widget.mm
@@ -39,6 +39,7 @@
@@ -38,6 +38,7 @@
#include "ui/views/widget/widget_aura_utils.h"
#include "ui/views/widget/widget_delegate.h"
@ -285,7 +285,7 @@ index 2432960..0fc88af 100644
extern "C" {
typedef int32_t CGSConnection;
@@ -48,6 +49,7 @@ CGError CGSSetWindowBackgroundBlurRadius(CGSConnection connection,
@@ -47,6 +48,7 @@ CGError CGSSetWindowBackgroundBlurRadius(CGSConnection connection,
int radius);
}
@ -293,7 +293,7 @@ index 2432960..0fc88af 100644
// The NSView that hosts the composited CALayer drawing the UI. It fills the
// window but is not hittable so that accessibility hit tests always go to the
@@ -101,7 +103,9 @@ - (void)setCurrentProgress:(NSAnimationProgress)progress {
@@ -100,7 +102,9 @@ using NSViewComparatorValue = __kindof NSView*;
const CGFloat kMavericksMenuOpacity = 251.0 / 255.0;
const CGFloat kYosemiteMenuOpacity = 177.0 / 255.0;
@ -303,7 +303,7 @@ index 2432960..0fc88af 100644
// Margin at edge and corners of the window that trigger resizing. These match
// actual Cocoa resize margins.
@@ -1331,8 +1335,10 @@ NSUInteger CountBridgedWindows(NSArray* child_windows) {
@@ -1332,8 +1336,10 @@ void BridgedNativeWidget::AddCompositorSuperview() {
// solid background, but make the CALayer transparent.
if (base::mac::IsAtLeastOS10_10()) {
[background_layer setOpacity:kYosemiteMenuOpacity];

Просмотреть файл

@ -10,7 +10,7 @@ index f338a95..cde934f 100644
#include "base/strings/utf_string_conversions.h"
#include "build/build_config.h"
#include "ui/base/l10n/l10n_util.h"
@@ -222,6 +223,9 @@ base::string16 Accelerator::GetShortcutText() const {
@@ -219,6 +220,9 @@ base::string16 Accelerator::GetShortcutText() const {
shortcut +=
static_cast<base::string16::value_type>(base::ToUpperASCII(c));
#endif
@ -20,7 +20,7 @@ index f338a95..cde934f 100644
} else {
shortcut = l10n_util::GetStringUTF16(string_id);
}
@@ -246,7 +250,8 @@ base::string16 Accelerator::GetShortcutText() const {
@@ -243,7 +247,8 @@ base::string16 Accelerator::GetShortcutText() const {
// more information.
if (IsCtrlDown())
shortcut = l10n_util::GetStringFUTF16(IDS_APP_CONTROL_MODIFIER, shortcut);

Просмотреть файл

@ -5,8 +5,8 @@ index 3f098ef..01f1ad4 100644
@@ -85,7 +85,7 @@ class CORE_EXPORT EditingBehavior {
// On Mac and Windows, pressing backspace (when it isn't handled otherwise)
// should navigate back.
bool shouldNavigateBackOnBackspace() const {
- return m_type != EditingUnixBehavior && m_type != EditingAndroidBehavior;
bool ShouldNavigateBackOnBackspace() const {
- return type_ != kEditingUnixBehavior && type_ != kEditingAndroidBehavior;
+ return false;
}

Просмотреть файл

@ -1,5 +1,19 @@
diff --git a/third_party/WebKit/Source/core/fileapi/File.h b/third_party/WebKit/Source/core/fileapi/File.h
index 0bfe29512050..81439f7ab8f7 100644
--- a/third_party/WebKit/Source/core/fileapi/File.h
+++ b/third_party/WebKit/Source/core/fileapi/File.h
@@ -170,6 +170,9 @@ class CORE_EXPORT File final : public Blob {
}
const String& name() const { return name_; }
+ // Getter for the path IDL attribute.
+ const String& path() const { return GetPath(); }
+
// Getter for the lastModified IDL attribute,
// http://dev.w3.org/2006/webapi/FileAPI/#file-attrs
long long lastModified() const;
diff --git a/third_party/WebKit/Source/core/fileapi/File.idl b/third_party/WebKit/Source/core/fileapi/File.idl
index df954bc..4683b28 100644
index df954bc8f818..4683b2853bb4 100644
--- a/third_party/WebKit/Source/core/fileapi/File.idl
+++ b/third_party/WebKit/Source/core/fileapi/File.idl
@@ -32,6 +32,7 @@

Просмотреть файл

@ -2,25 +2,25 @@ diff --git a/third_party/WebKit/Source/core/frame/LocalFrame.cpp b/third_party/W
index 6fa75cf..04c6a96 100644
--- a/third_party/WebKit/Source/core/frame/LocalFrame.cpp
+++ b/third_party/WebKit/Source/core/frame/LocalFrame.cpp
@@ -426,10 +426,6 @@ void LocalFrame::detach(FrameDetachType type) {
m_loader.stopAllLoaders();
m_loader.detach();
document()->shutdown();
@@ -435,10 +435,6 @@ void LocalFrame::detach(FrameDetachType type) {
loader_.StopAllLoaders();
loader_.Detach();
GetDocument()->Shutdown();
- // This is the earliest that scripting can be disabled:
- // - FrameLoader::detach() can fire XHR abort events
- // - Document::shutdown()'s deferred widget updates can run script.
- ScriptForbiddenScope forbidScript;
m_loader.clear();
if (!client())
- ScriptForbiddenScope forbid_script;
loader_.Clear();
if (!Client())
return;
@@ -438,6 +434,10 @@ void LocalFrame::detach(FrameDetachType type) {
@@ -447,6 +443,10 @@ void LocalFrame::detach(FrameDetachType type) {
// Notify ScriptController that the frame is closing, since its cleanup ends
// up calling back to LocalFrameClient via WindowProxy.
script().clearForClose();
GetScriptController().ClearForClose();
+ // This is the earliest that scripting can be disabled:
+ // - FrameLoader::detach() can fire XHR abort events
+ // - Document::shutdown()'s deferred widget updates can run script.
+ ScriptForbiddenScope forbidScript;
setView(nullptr);
+ ScriptForbiddenScope forbid_script;
SetView(nullptr);
m_host->eventHandlerRegistry().didRemoveAllEventHandlers(*domWindow());
page_->GetEventHandlerRegistry().DidRemoveAllEventHandlers(*DomWindow());

Просмотреть файл

@ -2,65 +2,65 @@ diff --git a/third_party/WebKit/Source/web/WebLocalFrameImpl.cpp b/third_party/W
index a95f10f..b97bef9 100644
--- a/third_party/WebKit/Source/web/WebLocalFrameImpl.cpp
+++ b/third_party/WebKit/Source/web/WebLocalFrameImpl.cpp
@@ -832,6 +832,13 @@ v8::Local<v8::Context> WebLocalFrameImpl::mainWorldScriptContext() const {
return scriptState->context();
@@ -871,6 +871,13 @@ v8::Local<v8::Context> WebLocalFrameImpl::MainWorldScriptContext() const {
return script_state->GetContext();
}
+v8::Local<v8::Context> WebLocalFrameImpl::worldScriptContext(
+ v8::Isolate* isolate, int worldID) const {
+ PassRefPtr<DOMWrapperWorld> world = DOMWrapperWorld::ensureIsolatedWorld(
+ isolate, worldID);
+ return ScriptState::forWorld(frame(), *world)->context();
+v8::Local<v8::Context> WebLocalFrameImpl::WorldScriptContext(
+ v8::Isolate* isolate, int world_id) const {
+ PassRefPtr<DOMWrapperWorld> world = DOMWrapperWorld::EnsureIsolatedWorld(
+ isolate, world_id);
+ return ToScriptState(GetFrame(), *world)->GetContext();
+}
+
bool WebFrame::scriptCanAccess(WebFrame* target) {
return BindingSecurity::shouldAllowAccessToFrame(
currentDOMWindow(mainThreadIsolate()), target->toImplBase()->frame(),
bool WebFrame::ScriptCanAccess(WebFrame* target) {
return BindingSecurity::ShouldAllowAccessToFrame(
CurrentDOMWindow(MainThreadIsolate()), target->ToImplBase()->GetFrame(),
diff --git a/third_party/WebKit/Source/web/WebLocalFrameImpl.h b/third_party/WebKit/Source/web/WebLocalFrameImpl.h
index 6898061..b79db8d 100644
--- a/third_party/WebKit/Source/web/WebLocalFrameImpl.h
+++ b/third_party/WebKit/Source/web/WebLocalFrameImpl.h
@@ -145,6 +145,8 @@ class WEB_EXPORT WebLocalFrameImpl final
@@ -148,6 +148,8 @@ class WEB_EXPORT WebLocalFrameImpl final
int argc,
v8::Local<v8::Value> argv[]) override;
v8::Local<v8::Context> mainWorldScriptContext() const override;
+ v8::Local<v8::Context> worldScriptContext(
+ v8::Isolate* isolate, int worldID) const override;
void reload(WebFrameLoadType) override;
void reloadWithOverrideURL(const WebURL& overrideUrl,
v8::Local<v8::Context> MainWorldScriptContext() const override;
+ v8::Local<v8::Context> WorldScriptContext(
+ v8::Isolate* isolate, int world_id) const override;
void Reload(WebFrameLoadType) override;
void ReloadWithOverrideURL(const WebURL& override_url,
WebFrameLoadType) override;
diff --git a/third_party/WebKit/Source/web/WebRemoteFrameImpl.cpp b/third_party/WebKit/Source/web/WebRemoteFrameImpl.cpp
index e43dcc0..bff3738 100644
diff --git a/src/third_party/WebKit/Source/web/WebRemoteFrameImpl.cpp b/src/third_party/WebKit/Source/web/WebRemoteFrameImpl.cpp
index d9f8326..ade2c3c 100644
--- a/third_party/WebKit/Source/web/WebRemoteFrameImpl.cpp
+++ b/third_party/WebKit/Source/web/WebRemoteFrameImpl.cpp
@@ -212,6 +212,12 @@ v8::Local<v8::Context> WebRemoteFrameImpl::mainWorldScriptContext() const {
@@ -211,6 +211,12 @@ v8::Local<v8::Context> WebRemoteFrameImpl::MainWorldScriptContext() const {
return v8::Local<v8::Context>();
}
+v8::Local<v8::Context> WebRemoteFrameImpl::worldScriptContext(
+ v8::Isolate* isolate, int worldID) const {
+v8::Local<v8::Context> WebRemoteFrameImpl::WorldScriptContext(
+ v8::Isolate* isolate, int world_id) const {
+ NOTREACHED();
+ return v8::Local<v8::Context>();
+}
+
v8::Local<v8::Context> WebRemoteFrameImpl::deprecatedMainWorldScriptContext()
const {
return toV8Context(frame(), DOMWrapperWorld::mainWorld());
void WebRemoteFrameImpl::Reload(WebFrameLoadType) {
NOTREACHED();
}
diff --git a/third_party/WebKit/Source/web/WebRemoteFrameImpl.h b/third_party/WebKit/Source/web/WebRemoteFrameImpl.h
index d049228..de5d606 100644
--- a/third_party/WebKit/Source/web/WebRemoteFrameImpl.h
+++ b/third_party/WebKit/Source/web/WebRemoteFrameImpl.h
@@ -75,6 +75,8 @@ class WEB_EXPORT WebRemoteFrameImpl final
@@ -73,6 +73,8 @@ class WEB_EXPORT WebRemoteFrameImpl final
int argc,
v8::Local<v8::Value> argv[]) override;
v8::Local<v8::Context> mainWorldScriptContext() const override;
+ v8::Local<v8::Context> worldScriptContext(
+ v8::Isolate* isolate, int worldID) const override;
v8::Local<v8::Context> deprecatedMainWorldScriptContext() const override;
void reload(WebFrameLoadType) override;
void reloadWithOverrideURL(const WebURL& overrideUrl,
v8::Local<v8::Context> MainWorldScriptContext() const override;
+ v8::Local<v8::Context> WorldScriptContext(
+ v8::Isolate* isolate, int world_id) const override;
void Reload(WebFrameLoadType) override;
void ReloadWithOverrideURL(const WebURL& override_url,
WebFrameLoadType) override;
diff --git a/third_party/WebKit/public/web/WebFrame.h b/third_party/WebKit/public/web/WebFrame.h
index 855ed08..5c10312c 100644
index 826ea3e..4509da9 100644
--- a/third_party/WebKit/public/web/WebFrame.h
+++ b/third_party/WebKit/public/web/WebFrame.h
@@ -42,6 +42,7 @@
@ -71,13 +71,13 @@ index 855ed08..5c10312c 100644
class Value;
template <class T>
class Local;
@@ -300,6 +301,9 @@ class WebFrame {
@@ -297,6 +298,9 @@ class WebFrame {
// be calling this API.
virtual v8::Local<v8::Context> mainWorldScriptContext() const = 0;
virtual v8::Local<v8::Context> MainWorldScriptContext() const = 0;
+ virtual v8::Local<v8::Context> worldScriptContext(
+ v8::Isolate* isolate, int worldID) const = 0;
+ virtual v8::Local<v8::Context> WorldScriptContext(
+ v8::Isolate* isolate, int world_id) const = 0;
+
// Returns true if the WebFrame currently executing JavaScript has access
// to the given WebFrame, or false otherwise.
BLINK_EXPORT static bool scriptCanAccess(WebFrame*);
BLINK_EXPORT static bool ScriptCanAccess(WebFrame*);

Просмотреть файл

@ -1,5 +1,5 @@
diff --git a/content/browser/renderer_host/browser_compositor_view_mac.h b/content/browser/renderer_host/browser_compositor_view_mac.h
index d0ecb71..248ba9a 100644
index 1c73b7f3a..1b368aa0a 100644
--- a/content/browser/renderer_host/browser_compositor_view_mac.h
+++ b/content/browser/renderer_host/browser_compositor_view_mac.h
@@ -10,6 +10,7 @@
@ -10,18 +10,16 @@ index d0ecb71..248ba9a 100644
#include "ui/compositor/compositor.h"
#include "ui/compositor/compositor_observer.h"
@@ -43,8 +44,8 @@ class BrowserCompositorMacClient {
@@ -39,7 +40,7 @@ class BrowserCompositorMacClient {
// is visible.
// - The RenderWidgetHostViewMac that is used to display these frames is
// attached to the NSView hierarchy of an NSWindow.
-class BrowserCompositorMac : public cc::BeginFrameObserver,
- public DelegatedFrameHostClient {
+class CONTENT_EXPORT BrowserCompositorMac : public cc::BeginFrameObserver,
+ public DelegatedFrameHostClient {
-class BrowserCompositorMac : public DelegatedFrameHostClient {
+class CONTENT_EXPORT BrowserCompositorMac : public DelegatedFrameHostClient {
public:
BrowserCompositorMac(
ui::AcceleratedWidgetMacNSView* accelerated_widget_mac_ns_view,
@@ -56,9 +57,11 @@ class BrowserCompositorMac : public cc::BeginFrameObserver,
@@ -51,9 +52,11 @@ class BrowserCompositorMac : public DelegatedFrameHostClient {
// These will not return nullptr until Destroy is called.
DelegatedFrameHost* GetDelegatedFrameHost();
@ -32,12 +30,12 @@ index d0ecb71..248ba9a 100644
+ ui::Compositor* GetCompositor();
ui::AcceleratedWidgetMac* GetAcceleratedWidgetMac();
void SwapCompositorFrame(uint32_t compositor_frame_sink_id,
void DidCreateNewRendererCompositorFrameSink(
diff --git a/content/browser/renderer_host/browser_compositor_view_mac.mm b/content/browser/renderer_host/browser_compositor_view_mac.mm
index e4c25e73..e2f789e 100644
index fba983b37..8cf962916 100644
--- a/content/browser/renderer_host/browser_compositor_view_mac.mm
+++ b/content/browser/renderer_host/browser_compositor_view_mac.mm
@@ -201,6 +201,12 @@ void OnCompositingShuttingDown(ui::Compositor* compositor) override {}
@@ -202,6 +202,12 @@ void OnCompositingShuttingDown(ui::Compositor* compositor) override {}
g_spare_recyclable_compositors.Get().clear();
}
@ -50,7 +48,7 @@ index e4c25e73..e2f789e 100644
ui::AcceleratedWidgetMac* BrowserCompositorMac::GetAcceleratedWidgetMac() {
if (recyclable_compositor_)
return recyclable_compositor_->accelerated_widget_mac();
@@ -417,8 +423,13 @@ void OnCompositingShuttingDown(ui::Compositor* compositor) override {}
@@ -421,8 +427,13 @@ void OnCompositingShuttingDown(ui::Compositor* compositor) override {}
}
gfx::Size BrowserCompositorMac::DelegatedFrameHostDesiredSizeInDIP() const {

Просмотреть файл

@ -1,318 +0,0 @@
diff --git a/content/browser/browser_plugin/browser_plugin_guest.cc b/content/browser/browser_plugin/browser_plugin_guest.cc
index 7b85e5440000..0ea3dd165fc1 100644
--- a/content/browser/browser_plugin/browser_plugin_guest.cc
+++ b/content/browser/browser_plugin/browser_plugin_guest.cc
@@ -896,24 +896,20 @@ void BrowserPluginGuest::OnExecuteEditCommand(int browser_plugin_instance_id,
void BrowserPluginGuest::OnImeSetComposition(
int browser_plugin_instance_id,
- const std::string& text,
- const std::vector<blink::WebCompositionUnderline>& underlines,
- int selection_start,
- int selection_end) {
- Send(new InputMsg_ImeSetComposition(routing_id(),
- base::UTF8ToUTF16(text), underlines,
- gfx::Range::InvalidRange(),
- selection_start, selection_end));
+ const BrowserPluginHostMsg_SetComposition_Params& params) {
+ Send(new InputMsg_ImeSetComposition(
+ routing_id(), params.text, params.underlines, params.replacement_range,
+ params.selection_start, params.selection_end));
}
void BrowserPluginGuest::OnImeCommitText(
int browser_plugin_instance_id,
- const std::string& text,
+ const base::string16& text,
const std::vector<blink::WebCompositionUnderline>& underlines,
+ const gfx::Range& replacement_range,
int relative_cursor_pos) {
- Send(new InputMsg_ImeCommitText(routing_id(), base::UTF8ToUTF16(text),
- underlines, gfx::Range::InvalidRange(),
- relative_cursor_pos));
+ Send(new InputMsg_ImeCommitText(routing_id(), text, underlines,
+ replacement_range, relative_cursor_pos));
}
void BrowserPluginGuest::OnImeFinishComposingText(bool keep_selection) {
diff --git a/content/browser/browser_plugin/browser_plugin_guest.h b/content/browser/browser_plugin/browser_plugin_guest.h
index f1218cd5505c..fedd4a75b5f5 100644
--- a/content/browser/browser_plugin/browser_plugin_guest.h
+++ b/content/browser/browser_plugin/browser_plugin_guest.h
@@ -45,6 +45,7 @@
#include "ui/gfx/geometry/rect.h"
struct BrowserPluginHostMsg_Attach_Params;
+struct BrowserPluginHostMsg_SetComposition_Params;
#if defined(OS_MACOSX)
struct FrameHostMsg_ShowPopup_Params;
@@ -342,14 +343,12 @@ class CONTENT_EXPORT BrowserPluginGuest : public GuestHost,
void OnTextInputStateChanged(const TextInputState& params);
void OnImeSetComposition(
int instance_id,
- const std::string& text,
- const std::vector<blink::WebCompositionUnderline>& underlines,
- int selection_start,
- int selection_end);
+ const BrowserPluginHostMsg_SetComposition_Params& params);
void OnImeCommitText(
int instance_id,
- const std::string& text,
+ const base::string16& text,
const std::vector<blink::WebCompositionUnderline>& underlines,
+ const gfx::Range& replacement_range,
int relative_cursor_pos);
void OnImeFinishComposingText(bool keep_selection);
void OnExtendSelectionAndDelete(int instance_id, int before, int after);
diff --git a/content/browser/frame_host/render_widget_host_view_guest.cc b/content/browser/frame_host/render_widget_host_view_guest.cc
index 2197f73ad506..4a32379f081b 100644
--- a/content/browser/frame_host/render_widget_host_view_guest.cc
+++ b/content/browser/frame_host/render_widget_host_view_guest.cc
@@ -84,7 +84,8 @@ RenderWidgetHostViewGuest::RenderWidgetHostViewGuest(
: RenderWidgetHostViewChildFrame(widget_host),
// |guest| is NULL during test.
guest_(guest ? guest->AsWeakPtr() : base::WeakPtr<BrowserPluginGuest>()),
- platform_view_(platform_view) {
+ platform_view_(platform_view),
+ should_forward_text_selection_(false) {
gfx::NativeView view = GetNativeView();
if (view)
UpdateScreenInfo(view);
@@ -380,6 +381,9 @@ void RenderWidgetHostViewGuest::TextInputStateChanged(
return;
// Forward the information to embedding RWHV.
rwhv->TextInputStateChanged(params);
+
+ should_forward_text_selection_ =
+ (params.type != ui::TEXT_INPUT_TYPE_NONE) && guest_ && guest_->focused();
}
void RenderWidgetHostViewGuest::ImeCancelComposition() {
@@ -417,7 +421,11 @@ void RenderWidgetHostViewGuest::ImeCompositionRangeChanged(
void RenderWidgetHostViewGuest::SelectionChanged(const base::string16& text,
size_t offset,
const gfx::Range& range) {
- platform_view_->SelectionChanged(text, offset, range);
+ RenderWidgetHostViewBase* view = should_forward_text_selection_
+ ? GetOwnerRenderWidgetHostView()
+ : platform_view_.get();
+ if (view)
+ view->SelectionChanged(text, offset, range);
}
void RenderWidgetHostViewGuest::SelectionBoundsChanged(
diff --git a/content/browser/frame_host/render_widget_host_view_guest.h b/content/browser/frame_host/render_widget_host_view_guest.h
index fea13850ab58..baebdd8a700d 100644
--- a/content/browser/frame_host/render_widget_host_view_guest.h
+++ b/content/browser/frame_host/render_widget_host_view_guest.h
@@ -162,6 +162,12 @@ class CONTENT_EXPORT RenderWidgetHostViewGuest
// RenderWidgetHostViewGuest mostly only cares about stuff related to
// compositing, the rest are directly forwarded to this |platform_view_|.
base::WeakPtr<RenderWidgetHostViewBase> platform_view_;
+
+ // When true the guest will forward its selection updates to the owner RWHV.
+ // The guest may forward its updates only when there is an ongoing IME
+ // session.
+ bool should_forward_text_selection_;
+
DISALLOW_COPY_AND_ASSIGN(RenderWidgetHostViewGuest);
};
diff --git a/content/common/browser_plugin/browser_plugin_messages.h b/content/common/browser_plugin/browser_plugin_messages.h
index 8c4ebd94cabf..b4e635e9ff96 100644
--- a/content/common/browser_plugin/browser_plugin_messages.h
+++ b/content/common/browser_plugin/browser_plugin_messages.h
@@ -26,6 +26,7 @@
#include "ui/gfx/geometry/size.h"
#include "ui/gfx/ipc/gfx_param_traits.h"
#include "ui/gfx/ipc/skia/gfx_skia_param_traits.h"
+#include "ui/gfx/range/range.h"
#undef IPC_MESSAGE_EXPORT
#define IPC_MESSAGE_EXPORT CONTENT_EXPORT
@@ -44,6 +45,14 @@ IPC_STRUCT_BEGIN(BrowserPluginHostMsg_Attach_Params)
IPC_STRUCT_MEMBER(bool, is_full_page_plugin)
IPC_STRUCT_END()
+IPC_STRUCT_BEGIN(BrowserPluginHostMsg_SetComposition_Params)
+ IPC_STRUCT_MEMBER(base::string16, text)
+ IPC_STRUCT_MEMBER(std::vector<blink::WebCompositionUnderline>, underlines)
+ IPC_STRUCT_MEMBER(gfx::Range, replacement_range)
+ IPC_STRUCT_MEMBER(int, selection_start)
+ IPC_STRUCT_MEMBER(int, selection_end)
+IPC_STRUCT_END()
+
// Browser plugin messages
// -----------------------------------------------------------------------------
@@ -65,21 +74,18 @@ IPC_MESSAGE_CONTROL2(BrowserPluginHostMsg_SetEditCommandsForNextKeyEvent,
// This message is sent from BrowserPlugin to BrowserPluginGuest whenever IME
// composition state is updated.
-IPC_MESSAGE_CONTROL5(
- BrowserPluginHostMsg_ImeSetComposition,
- int /* browser_plugin_instance_id */,
- std::string /* text */,
- std::vector<blink::WebCompositionUnderline> /* underlines */,
- int /* selectiont_start */,
- int /* selection_end */)
+IPC_MESSAGE_CONTROL2(BrowserPluginHostMsg_ImeSetComposition,
+ int /* browser_plugin_instance_id */,
+ BrowserPluginHostMsg_SetComposition_Params /* params */)
// This message is sent from BrowserPlugin to BrowserPluginGuest to notify that
// deleting the current composition and inserting specified text is requested.
-IPC_MESSAGE_CONTROL4(
+IPC_MESSAGE_CONTROL5(
BrowserPluginHostMsg_ImeCommitText,
int /* browser_plugin_instance_id */,
- std::string /* text */,
+ base::string16 /* text */,
std::vector<blink::WebCompositionUnderline> /* underlines */,
+ gfx::Range /* replacement_range */,
int /* relative_cursor_pos */)
// This message is sent from BrowserPlugin to BrowserPluginGuest to notify that
diff --git a/content/renderer/browser_plugin/browser_plugin.cc b/content/renderer/browser_plugin/browser_plugin.cc
index d7ebcfdb8eb9..06762fbd11e2 100644
--- a/content/renderer/browser_plugin/browser_plugin.cc
+++ b/content/renderer/browser_plugin/browser_plugin.cc
@@ -548,22 +548,28 @@ bool BrowserPlugin::executeEditCommand(const blink::WebString& name,
bool BrowserPlugin::setComposition(
const blink::WebString& text,
const blink::WebVector<blink::WebCompositionUnderline>& underlines,
+ const blink::WebRange& replacementRange,
int selectionStart,
int selectionEnd) {
if (!attached())
return false;
- std::vector<blink::WebCompositionUnderline> std_underlines;
+ BrowserPluginHostMsg_SetComposition_Params params;
+ params.text = text.utf16();
for (size_t i = 0; i < underlines.size(); ++i) {
- std_underlines.push_back(underlines[i]);
+ params.underlines.push_back(underlines[i]);
}
+ params.replacement_range =
+ replacementRange.isNull()
+ ? gfx::Range::InvalidRange()
+ : gfx::Range(static_cast<uint32_t>(replacementRange.startOffset()),
+ static_cast<uint32_t>(replacementRange.endOffset()));
+ params.selection_start = selectionStart;
+ params.selection_end = selectionEnd;
+
BrowserPluginManager::Get()->Send(new BrowserPluginHostMsg_ImeSetComposition(
- browser_plugin_instance_id_,
- text.utf8(),
- std_underlines,
- selectionStart,
- selectionEnd));
+ browser_plugin_instance_id_, params));
// TODO(kochi): This assumes the IPC handling always succeeds.
return true;
}
@@ -571,6 +577,7 @@ bool BrowserPlugin::setComposition(
bool BrowserPlugin::commitText(
const blink::WebString& text,
const blink::WebVector<blink::WebCompositionUnderline>& underlines,
+ const blink::WebRange& replacementRange,
int relative_cursor_pos) {
if (!attached())
return false;
@@ -580,9 +587,15 @@ bool BrowserPlugin::commitText(
std_underlines.push_back(std_underlines[i]);
}
+ gfx::Range replacement_range =
+ replacementRange.isNull()
+ ? gfx::Range::InvalidRange()
+ : gfx::Range(static_cast<uint32_t>(replacementRange.startOffset()),
+ static_cast<uint32_t>(replacementRange.endOffset()));
+
BrowserPluginManager::Get()->Send(new BrowserPluginHostMsg_ImeCommitText(
- browser_plugin_instance_id_, text.utf8(), std_underlines,
- relative_cursor_pos));
+ browser_plugin_instance_id_, text.utf16(), std_underlines,
+ replacement_range, relative_cursor_pos));
// TODO(kochi): This assumes the IPC handling always succeeds.
return true;
}
diff --git a/content/renderer/browser_plugin/browser_plugin.h b/content/renderer/browser_plugin/browser_plugin.h
index 47900ad6fcfc..989306432085 100644
--- a/content/renderer/browser_plugin/browser_plugin.h
+++ b/content/renderer/browser_plugin/browser_plugin.h
@@ -113,11 +113,13 @@ class CONTENT_EXPORT BrowserPlugin :
bool setComposition(
const blink::WebString& text,
const blink::WebVector<blink::WebCompositionUnderline>& underlines,
+ const blink::WebRange& replacementRange,
int selectionStart,
int selectionEnd) override;
bool commitText(
const blink::WebString& text,
const blink::WebVector<blink::WebCompositionUnderline>& underlines,
+ const blink::WebRange& replacementRange,
int relative_cursor_pos) override;
bool finishComposingText(
blink::WebInputMethodController::ConfirmCompositionBehavior
diff --git a/third_party/WebKit/Source/web/WebInputMethodControllerImpl.cpp b/third_party/WebKit/Source/web/WebInputMethodControllerImpl.cpp
index e71d80d5d855..7b491d2470cf 100644
--- a/third_party/WebKit/Source/web/WebInputMethodControllerImpl.cpp
+++ b/third_party/WebKit/Source/web/WebInputMethodControllerImpl.cpp
@@ -50,8 +50,8 @@ bool WebInputMethodControllerImpl::setComposition(
int selectionStart,
int selectionEnd) {
if (WebPlugin* plugin = focusedPluginIfInputMethodSupported()) {
- return plugin->setComposition(text, underlines, selectionStart,
- selectionEnd);
+ return plugin->setComposition(text, underlines, replacementRange,
+ selectionStart, selectionEnd);
}
// We should use this |editor| object only to complete the ongoing
@@ -128,8 +128,10 @@ bool WebInputMethodControllerImpl::commitText(
UserGestureIndicator gestureIndicator(DocumentUserGestureToken::create(
frame()->document(), UserGestureToken::NewGesture));
- if (WebPlugin* plugin = focusedPluginIfInputMethodSupported())
- return plugin->commitText(text, underlines, relativeCaretPosition);
+ if (WebPlugin* plugin = focusedPluginIfInputMethodSupported()) {
+ return plugin->commitText(text, underlines, replacementRange,
+ relativeCaretPosition);
+ }
// Select the range to be replaced with the composition later.
if (!replacementRange.isNull())
diff --git a/third_party/WebKit/public/web/WebPlugin.h b/third_party/WebKit/public/web/WebPlugin.h
index 8d2078b19a07..6e6403a7a6a5 100644
--- a/third_party/WebKit/public/web/WebPlugin.h
+++ b/third_party/WebKit/public/web/WebPlugin.h
@@ -167,19 +167,23 @@ class WebPlugin {
}
// Sets composition text from input method, and returns true if the
- // composition is set successfully.
+ // composition is set successfully. If |replacementRange| is not null, the
+ // text inside |replacementRange| will be replaced by |text|
virtual bool setComposition(
const WebString& text,
const WebVector<WebCompositionUnderline>& underlines,
+ const WebRange& replacementRange,
int selectionStart,
int selectionEnd) {
return false;
}
// Deletes the ongoing composition if any, inserts the specified text, and
- // moves the caret according to relativeCaretPosition.
+ // moves the caret according to relativeCaretPosition. If |replacementRange|
+ // is not null, the text inside |replacementRange| will be replaced by |text|.
virtual bool commitText(const WebString& text,
const WebVector<WebCompositionUnderline>& underlines,
+ const WebRange& replacementRange,
int relativeCaretPosition) {
return false;
}

Просмотреть файл

@ -4,7 +4,7 @@ index 06762fb..e89b1f0 100644
+++ b/content/renderer/browser_plugin/browser_plugin.cc
@@ -448,15 +448,11 @@ blink::WebInputEventResult BrowserPlugin::handleInputEvent(
DCHECK(!blink::WebInputEvent::isTouchEventType(event.type()));
DCHECK(!blink::WebInputEvent::IsTouchEventType(event.GetType()));
- // With direct event routing turned on, BrowserPlugin should almost never
- // see wheel events any more. The two exceptions are (1) scroll bubbling, and
@ -13,13 +13,13 @@ index 06762fb..e89b1f0 100644
- // it's in a top-level embedder. In both cases we should indicate the event
- // as not handled (for GesturePinch on Mac, indicating the event has been
- // handled leads to touchpad pinch not working).
- if (event.type() == blink::WebInputEvent::MouseWheel)
- return blink::WebInputEventResult::NotHandled;
+ if (event.type() == blink::WebInputEvent::MouseWheel) {
- if (event.GetType() == blink::WebInputEvent::kMouseWheel)
- return blink::WebInputEventResult::kNotHandled;
+ if (event.GetType() == blink::WebInputEvent::kMouseWheel) {
+ auto wheel_event = static_cast<const blink::WebMouseWheelEvent&>(event);
+ if (wheel_event.resendingPluginId == browser_plugin_instance_id_)
+ return blink::WebInputEventResult::NotHandled;
+ if (wheel_event.resending_plugin_id == browser_plugin_instance_id_)
+ return blink::WebInputEventResult::kNotHandled;
+ }
if (blink::WebInputEvent::isGestureEventType(event.type())) {
if (blink::WebInputEvent::IsGestureEventType(event.GetType())) {
auto gesture_event = static_cast<const blink::WebGestureEvent&>(event);

Просмотреть файл

@ -55,7 +55,7 @@ diff --git a/third_party/WebKit/Source/platform/BUILD.gn b/third_party/WebKit/So
index 15bf689..9cdc19d 100644
--- a/third_party/WebKit/Source/platform/BUILD.gn
+++ b/third_party/WebKit/Source/platform/BUILD.gn
@@ -133,6 +133,7 @@ action("character_data") {
@@ -160,6 +160,7 @@ action("character_data") {
}
executable("character_data_generator") {
@ -67,7 +67,7 @@ diff --git a/third_party/widevine/cdm/BUILD.gn b/third_party/widevine/cdm/BUILD.
index dda9799..2bf3f57 100644
--- a/third_party/widevine/cdm/BUILD.gn
+++ b/third_party/widevine/cdm/BUILD.gn
@@ -110,7 +110,7 @@ if (widevine_cdm_binary_files != []) {
@@ -153,7 +153,7 @@ if (widevine_cdm_binary_files != []) {
"//build/config/sanitizers:deps",
]

Просмотреть файл

@ -51,12 +51,12 @@ index dd1017f..d15706b 100644
description = "CXX {{output}}"
outputs = [
diff --git a/build/toolchain/win/tool_wrapper.py b/build/toolchain/win/tool_wrapper.py
index 4e69dea..c70408c 100644
index 3a81368f3469..7c5ef1ea5db4 100644
--- a/build/toolchain/win/tool_wrapper.py
+++ b/build/toolchain/win/tool_wrapper.py
@@ -326,5 +326,25 @@ class WinTool(object):
cmd.extend(ninja_targets)
return subprocess.call(cmd, shell=True, cwd=BASE_DIR)
@@ -315,6 +315,25 @@ class WinTool(object):
dirname = dirname[0] if dirname else None
return subprocess.call(args, shell=True, env=env, cwd=dirname)
+ def ExecClWrapper(self, *args):
+ """Invokes cl.exe to compile a C/C++ source file."""
@ -77,6 +77,6 @@ index 4e69dea..c70408c 100644
+ pdb_flag = '/Fd"%s"' % pdb_filename
+ cmdline = '%s %s' % (subprocess.list2cmdline(args), pdb_flag)
+ return subprocess.call(cmdline, shell=False)
+
if __name__ == '__main__':
sys.exit(main(sys.argv[1:]))

Просмотреть файл

@ -2,7 +2,7 @@ diff --git a/content/browser/renderer_host/render_message_filter.cc b/content/br
index c60d39a..3ce4657 100644
--- a/content/browser/renderer_host/render_message_filter.cc
+++ b/content/browser/renderer_host/render_message_filter.cc
@@ -213,12 +213,55 @@ void RenderMessageFilter::GenerateRoutingID(
@@ -202,12 +202,55 @@ void RenderMessageFilter::GenerateRoutingID(
void RenderMessageFilter::CreateNewWindow(
mojom::CreateNewWindowParamsPtr params,
const CreateNewWindowCallback& callback) {
@ -62,8 +62,8 @@ diff --git a/content/common/render_message_filter.mojom b/content/common/render_
index 78c93ef..738f278 100644
--- a/content/common/render_message_filter.mojom
+++ b/content/common/render_message_filter.mojom
@@ -6,12 +6,32 @@ module content.mojom;
@@ -7,12 +7,32 @@ module content.mojom;
import "cc/ipc/shared_bitmap_manager.mojom";
import "content/common/native_types.mojom";
import "content/public/common/window_container_type.mojom";
+import "mojo/common/file_path.mojom";
@ -95,7 +95,7 @@ index 78c93ef..738f278 100644
struct CreateNewWindowParams {
// The routing id of the frame initiating the open.
int32 opener_render_frame_id;
@@ -55,6 +75,10 @@ struct CreateNewWindowParams {
@@ -56,6 +76,10 @@ struct CreateNewWindowParams {
// The window features to use for the new view.
blink.mojom.WindowFeatures features;
@ -110,7 +110,7 @@ diff --git a/content/public/browser/content_browser_client.cc b/content/public/b
index f9f587b..b4f264c 100644
--- a/content/public/browser/content_browser_client.cc
+++ b/content/public/browser/content_browser_client.cc
@@ -293,6 +293,8 @@ bool ContentBrowserClient::CanCreateWindow(
@@ -295,6 +295,8 @@ bool ContentBrowserClient::CanCreateWindow(
const std::string& frame_name,
WindowOpenDisposition disposition,
const blink::mojom::WindowFeatures& features,
@ -159,7 +159,7 @@ diff --git a/content/renderer/render_view_impl.cc b/content/renderer/render_view
index c59e97853d4f..99e10f96cc54 100644
--- a/content/renderer/render_view_impl.cc
+++ b/content/renderer/render_view_impl.cc
@@ -44,6 +44,7 @@
@@ -43,6 +43,7 @@
#include "content/child/request_extra_data.h"
#include "content/child/v8_value_converter_impl.h"
#include "content/child/webmessageportchannel_impl.h"
@ -167,13 +167,13 @@ index c59e97853d4f..99e10f96cc54 100644
#include "content/common/content_constants_internal.h"
#include "content/common/content_switches_internal.h"
#include "content/common/dom_storage/dom_storage_types.h"
@@ -1465,6 +1466,64 @@ WebView* RenderViewImpl::createView(WebLocalFrame* creator,
@@ -1434,6 +1435,64 @@ WebView* RenderViewImpl::createView(WebLocalFrame* creator,
}
params->features = ConvertWebWindowFeaturesToMojoWindowFeatures(features);
+ for (size_t i = 0; i < features.additionalFeatures.size(); ++i) {
+ for (size_t i = 0; i < features.additional_features.size(); ++i) {
+ params->additional_features.push_back(
+ features.additionalFeatures[i].utf8());
+ features.additional_features[i].Utf8());
+ }
+
+ params->body = mojom::ResourceRequestBody::New();

Просмотреть файл

@ -2,7 +2,7 @@ diff --git a/content/browser/compositor/gpu_process_transport_factory.cc b/conte
index 50a66bb..73a9515 100644
--- a/content/browser/compositor/gpu_process_transport_factory.cc
+++ b/content/browser/compositor/gpu_process_transport_factory.cc
@@ -220,6 +220,12 @@ GpuProcessTransportFactory::~GpuProcessTransportFactory() {
@@ -217,6 +217,12 @@ GpuProcessTransportFactory::~GpuProcessTransportFactory() {
std::unique_ptr<cc::SoftwareOutputDevice>
GpuProcessTransportFactory::CreateSoftwareOutputDevice(
ui::Compositor* compositor) {
@ -27,8 +27,8 @@ index 92696ad..7da8159 100644
#include "cc/surfaces/surface_sequence.h"
#include "cc/trees/layer_tree_host_client.h"
#include "cc/trees/layer_tree_host_single_thread_client.h"
@@ -190,6 +191,15 @@ class COMPOSITOR_EXPORT CompositorLock
DISALLOW_COPY_AND_ASSIGN(CompositorLock);
@@ -168,6 +169,15 @@ class COMPOSITOR_EXPORT CompositorLock
virtual void RemoveObserver(ContextFactoryObserver* observer) = 0;
};
+class COMPOSITOR_EXPORT CompositorDelegate {
@ -43,7 +43,7 @@ index 92696ad..7da8159 100644
// Compositor object to take care of GPU painting.
// A Browser compositor object is responsible for generating the final
// displayable form of pixels comprising a single widget's contents. It draws an
@@ -219,6 +229,9 @@ class COMPOSITOR_EXPORT Compositor
@@ -200,6 +210,9 @@ class COMPOSITOR_EXPORT Compositor
// Schedules a redraw of the layer tree associated with this compositor.
void ScheduleDraw();
@ -53,12 +53,12 @@ index 92696ad..7da8159 100644
// Sets the root of the layer tree drawn by this Compositor. The root layer
// must have no parent. The compositor's root layer is reset if the root layer
// is destroyed. NULL can be passed to reset the root layer, in which case the
@@ -398,6 +411,8 @@ class COMPOSITOR_EXPORT Compositor
@@ -379,6 +392,8 @@ class COMPOSITOR_EXPORT Compositor
ui::ContextFactory* context_factory_;
ui::ContextFactoryPrivate* context_factory_private_;
+ CompositorDelegate* delegate_ = nullptr;
+
// The root of the Layer tree drawn by this compositor.
Layer* root_layer_;
Layer* root_layer_ = nullptr;

Просмотреть файл

@ -0,0 +1,13 @@
diff --git a/build/config/compiler/BUILD.gn b/build/config/compiler/BUILD.gn
index 3b77c055108b..88a702425690 100644
--- a/build/config/compiler/BUILD.gn
+++ b/build/config/compiler/BUILD.gn
@@ -1074,7 +1074,7 @@ config("default_warnings") {
"-Wno-inconsistent-missing-override",
]
- if (is_linux && target_cpu == "x86") {
+ if (is_linux) {
cflags += [
# TODO(thakis): Remove from 32-bit Linux eventually, https://707084
"-Wno-deprecated-register",

Просмотреть файл

@ -2,7 +2,7 @@ diff --git a/content/browser/renderer_host/render_widget_host_impl.cc b/content/
index 15b8995..6a226f1 100644
--- a/content/browser/renderer_host/render_widget_host_impl.cc
+++ b/content/browser/renderer_host/render_widget_host_impl.cc
@@ -604,6 +604,9 @@ void RenderWidgetHostImpl::WasHidden() {
@@ -613,6 +613,9 @@ void RenderWidgetHostImpl::WasHidden() {
if (is_hidden_)
return;
@ -16,7 +16,7 @@ diff --git a/content/browser/renderer_host/render_widget_host_impl.h b/content/b
index b6aa99e..ef4fa35 100644
--- a/content/browser/renderer_host/render_widget_host_impl.h
+++ b/content/browser/renderer_host/render_widget_host_impl.h
@@ -114,6 +114,9 @@ class CONTENT_EXPORT RenderWidgetHostImpl : public RenderWidgetHost,
@@ -124,6 +124,9 @@ class CONTENT_EXPORT RenderWidgetHostImpl : public RenderWidgetHost,
// RenderWidgetHostImpl.
static RenderWidgetHostImpl* From(RenderWidgetHost* rwh);

Просмотреть файл

@ -2,7 +2,7 @@ diff --git a/content/browser/frame_host/render_frame_host_manager.cc b/content/b
index 1bbf60fac4e1..ca71865f89e8 100644
--- a/content/browser/frame_host/render_frame_host_manager.cc
+++ b/content/browser/frame_host/render_frame_host_manager.cc
@@ -1217,6 +1217,19 @@ RenderFrameHostManager::GetSiteInstanceForNavigation(
@@ -1167,6 +1167,19 @@ RenderFrameHostManager::GetSiteInstanceForNavigation(
SiteInstance* current_instance = render_frame_host_->GetSiteInstance();

Просмотреть файл

@ -16,7 +16,7 @@ index fb68c4c..57b15c3 100644
#include "third_party/WebKit/public/platform/WebTouchEvent.h"
#include "ui/gfx/geometry/size_conversions.h"
#include "ui/gfx/geometry/size_f.h"
@@ -712,4 +714,28 @@ void RenderWidgetHostViewChildFrame::ResetCompositorFrameSinkSupport() {
@@ -711,4 +713,28 @@ void RenderWidgetHostViewChildFrame::ResetCompositorFrameSinkSupport() {
support_.reset();
}
@ -44,13 +44,15 @@ index fb68c4c..57b15c3 100644
+ frame_subscriber_.reset();
+}
+
} // namespace content
bool RenderWidgetHostViewChildFrame::HasEmbedderChanged() {
return false;
}
diff --git a/content/browser/frame_host/render_widget_host_view_child_frame.h b/content/browser/frame_host/render_widget_host_view_child_frame.h
index 87e2de41..36edc3a 100644
--- a/content/browser/frame_host/render_widget_host_view_child_frame.h
+++ b/content/browser/frame_host/render_widget_host_view_child_frame.h
@@ -157,8 +157,11 @@ class CONTENT_EXPORT RenderWidgetHostViewChildFrame
void DidReceiveCompositorFrameAck() override;
@@ -164,8 +164,11 @@ class CONTENT_EXPORT RenderWidgetHostViewChildFrame
const cc::ReturnedResourceArray& resources) override;
void OnBeginFrame(const cc::BeginFrameArgs& args) override;
void ReclaimResources(const cc::ReturnedResourceArray& resources) override;
- void WillDrawSurface(const cc::LocalSurfaceId& id,
@ -63,12 +65,12 @@ index 87e2de41..36edc3a 100644
// Exposed for tests.
bool IsChildFrameForTesting() const override;
@@ -250,6 +253,8 @@ class CONTENT_EXPORT RenderWidgetHostViewChildFrame
@@ -258,6 +261,8 @@ class CONTENT_EXPORT RenderWidgetHostViewChildFrame
// The surface client ID of the parent RenderWidgetHostView. 0 if none.
cc::FrameSinkId parent_frame_sink_id_;
+ std::unique_ptr<RenderWidgetHostViewFrameSubscriber> frame_subscriber_;
+
base::WeakPtrFactory<RenderWidgetHostViewChildFrame> weak_factory_;
DISALLOW_COPY_AND_ASSIGN(RenderWidgetHostViewChildFrame);
};
bool has_frame_ = false;
cc::mojom::MojoCompositorFrameSinkClient* renderer_compositor_frame_sink_ =
nullptr;

Просмотреть файл

@ -0,0 +1,99 @@
diff --git a/ui/latency/BUILD.gn b/ui/latency/BUILD.gn
index b0242373612f..9667d40fc50d 100644
--- a/ui/latency/BUILD.gn
+++ b/ui/latency/BUILD.gn
@@ -4,19 +4,22 @@
import("//testing/test.gni")
-source_set("latency") {
+component("latency") {
sources = [
"latency/latency_histogram_macros.h",
"latency_info.cc",
"latency_info.h",
"latency_tracker.cc",
"latency_tracker.h",
+ "ui_latency_export.h",
]
deps = [
"//base",
"//ui/gfx",
]
+
+ defines = [ "UI_LATENCY_IMPLEMENTATION" ]
}
test("latency_unittests") {
diff --git a/ui/latency/latency_info.h b/ui/latency/latency_info.h
index b358fba..5aa05a4 100644
--- a/ui/latency/latency_info.h
+++ b/ui/latency/latency_info.h
@@ -14,6 +14,7 @@
#include "base/containers/small_map.h"
#include "base/time/time.h"
+#include "ui/latency/ui_latency_export.h"
#include "ui/gfx/geometry/point_f.h"
#if !defined(OS_IOS)
@@ -113,7 +114,7 @@ enum SourceEventType {
SOURCE_EVENT_TYPE_LAST = OTHER,
};
-class LatencyInfo {
+class UI_LATENCY_EXPORT LatencyInfo {
public:
struct LatencyComponent {
// Nondecreasing number that can be used to determine what events happened
diff --git a/ui/latency/latency_tracker.h b/ui/latency/latency_tracker.h
index 0fae6d317702..23717620ede1 100644
--- a/ui/latency/latency_tracker.h
+++ b/ui/latency/latency_tracker.h
@@ -7,12 +7,13 @@
#include "base/macros.h"
#include "ui/latency/latency_info.h"
+#include "ui/latency/ui_latency_export.h"
namespace ui {
// Utility class for tracking the latency of events. Relies on LatencyInfo
// components logged by content::RenderWidgetHostLatencyTracker.
-class LatencyTracker {
+class UI_LATENCY_EXPORT LatencyTracker {
public:
LatencyTracker() = default;
~LatencyTracker() = default;
diff --git a/ui/latency/ui_latency_export.h b/ui/latency/ui_latency_export.h
new file mode 100644
index 0000000..f24ee91
--- /dev/null
+++ b/ui/latency/ui_latency_export.h
@@ -0,0 +1,25 @@
+#ifndef UI_LATENCY_UI_LATENCY_EXPORT_H_
+#define UI_LATENCY_UI_LATENCY_EXPORT_H_
+
+#if defined(COMPONENT_BUILD)
+#if defined(WIN32)
+
+#if defined(UI_LATENCY_IMPLEMENTATION)
+#define UI_LATENCY_EXPORT __declspec(dllexport)
+#else
+#define UI_LATENCY_EXPORT __declspec(dllimport)
+#endif // defined(UI_LATENCY_IMPLEMENTATION)
+
+#else // defined(WIN32)
+#if defined(UI_LATENCY_IMPLEMENTATION)
+#define UI_LATENCY_EXPORT __attribute__((visibility("default")))
+#else
+#define UI_LATENCY_EXPORT
+#endif
+#endif
+
+#else // defined(COMPONENT_BUILD)
+#define UI_LATENCY_EXPORT
+#endif
+
+#endif // UI_LATENCY_UI_LATENCY_EXPORT_H_

Просмотреть файл

@ -2,7 +2,7 @@ diff --git a/chrome/browser/ui/libgtkui/BUILD.gn b/chrome/browser/ui/libgtkui/BU
index aa48833..ea700cc 100644
--- a/chrome/browser/ui/libgtkui/BUILD.gn
+++ b/chrome/browser/ui/libgtkui/BUILD.gn
@@ -115,6 +115,7 @@ template("libgtkui") {
@@ -116,6 +116,7 @@ template("libgtkui") {
"//chrome:strings",
"//chrome/app:command_ids",
"//chrome/app/theme:theme_resources",

Просмотреть файл

@ -1,10 +1,10 @@
diff --git a/content/public/browser/content_browser_client.h b/content/public/browser/content_browser_client.h
index 45056271e932..7514dba824d2 100644
index 3d9979e895f6..8b085fe8de0d 100644
--- a/content/public/browser/content_browser_client.h
+++ b/content/public/browser/content_browser_client.h
@@ -162,6 +163,11 @@ class CONTENT_EXPORT ContentBrowserClient {
@@ -171,6 +171,11 @@ class CONTENT_EXPORT ContentBrowserClient {
const scoped_refptr<base::TaskRunner>& task_runner,
const base::Closure& task);
base::OnceClosure task);
+ // Electron: Allows intercepting the SiteInstance being created for navigation
+ virtual void OnCreateSiteInstanceForNavigation(

Просмотреть файл

@ -2,7 +2,7 @@ diff --git a/content/app/content_main_runner.cc b/content/app/content_main_runne
index c283922..397ba80 100644
--- a/content/app/content_main_runner.cc
+++ b/content/app/content_main_runner.cc
@@ -763,7 +763,7 @@ class ContentMainRunnerImpl : public ContentMainRunner {
@@ -657,7 +657,7 @@ class ContentMainRunnerImpl : public ContentMainRunner {
InitializeV8IfNeeded(command_line, process_type);

Просмотреть файл

@ -1,80 +0,0 @@
diff --git a/components/ui_devtools/string_util.h b/components/ui_devtools/string_util.h
index 4efb835380f6..d08b8b6f22f6 100644
--- a/components/ui_devtools/string_util.h
+++ b/components/ui_devtools/string_util.h
@@ -45,6 +45,11 @@ class StringUtil {
static String fromDouble(double number) {
return base::DoubleToString(number);
}
+ static double toDouble(const char* s, size_t len, bool* ok) {
+ double v = 0.0;
+ *ok = base::StringToDouble(std::string(s, len), &v);
+ return *ok ? v : 0.0;
+ }
static void builderAppend(StringBuilder& builder, const String& s) {
builder.append(s);
}
diff --git a/content/browser/devtools/protocol_string.h b/content/browser/devtools/protocol_string.h
index 90dbd4abf7cf..38dd03e41c34 100644
--- a/content/browser/devtools/protocol_string.h
+++ b/content/browser/devtools/protocol_string.h
@@ -52,6 +52,11 @@ class CONTENT_EXPORT StringUtil {
s = "0" + s;
return s;
}
+ static double toDouble(const char* s, size_t len, bool* ok) {
+ double v = 0.0;
+ *ok = base::StringToDouble(std::string(s, len), &v);
+ return *ok ? v : 0.0;
+ }
static size_t find(const String& s, const char* needle) {
return s.find(needle);
}
diff --git a/third_party/WebKit/Source/core/inspector/V8InspectorString.h b/third_party/WebKit/Source/core/inspector/V8InspectorString.h
index c2d74494dcad..e86c6650b1d3 100644
--- a/third_party/WebKit/Source/core/inspector/V8InspectorString.h
+++ b/third_party/WebKit/Source/core/inspector/V8InspectorString.h
@@ -11,6 +11,7 @@
#include "wtf/Assertions.h"
#include "wtf/text/StringBuilder.h"
#include "wtf/text/StringHash.h"
+#include "wtf/text/StringToNumber.h"
#include "wtf/text/StringView.h"
#include "wtf/text/WTFString.h"
@@ -45,6 +46,9 @@ class CORE_EXPORT StringUtil {
static String fromDouble(double number) {
return Decimal::fromDouble(number).toString();
}
+ static double toDouble(const char* s, size_t len, bool* ok) {
+ return WTF::charactersToDouble(reinterpret_cast<const LChar*>(s), len, ok);
+ }
static size_t find(const String& s, const char* needle) {
return s.find(needle);
}
diff --git a/third_party/inspector_protocol/lib/Parser_cpp.template b/third_party/inspector_protocol/lib/Parser_cpp.template
index 4bf6bebc467e..f3dde5ac218e 100644
--- a/third_party/inspector_protocol/lib/Parser_cpp.template
+++ b/third_party/inspector_protocol/lib/Parser_cpp.template
@@ -51,19 +51,13 @@ double charactersToDouble(const uint16_t* characters, size_t length, bool* ok)
buffer.push_back(static_cast<char>(characters[i]));
}
buffer.push_back('\0');
- char* endptr;
- double result = std::strtod(buffer.data(), &endptr);
- *ok = !(*endptr);
- return result;
+ return StringUtil::toDouble(buffer.data(), length, ok);
}
double charactersToDouble(const uint8_t* characters, size_t length, bool* ok)
{
std::string buffer(reinterpret_cast<const char*>(characters), length);
- char* endptr;
- double result = std::strtod(buffer.data(), &endptr);
- *ok = !(*endptr);
- return result;
+ return StringUtil::toDouble(buffer.data(), length, ok);
}
template<typename Char>

Просмотреть файл

@ -2,7 +2,7 @@ diff --git a/pdf/out_of_process_instance.cc b/pdf/out_of_process_instance.cc
index 1fa0964..06e5ad8 100644
--- a/pdf/out_of_process_instance.cc
+++ b/pdf/out_of_process_instance.cc
@@ -336,6 +336,7 @@ bool OutOfProcessInstance::Init(uint32_t argc,
@@ -335,6 +335,7 @@ bool OutOfProcessInstance::Init(uint32_t argc,
base::StringPiece document_url_piece(document_url);
is_print_preview_ = document_url_piece.starts_with(kChromePrint);
if (!document_url_piece.starts_with(kChromeExtension) &&

Просмотреть файл

@ -0,0 +1,16 @@
diff --git a/BUILD.gn b/BUILD.gn
index 067416ed38f4..9fa07961c5b8 100644
--- a/third_party/protobuf/BUILD.gn
+++ b/third_party/protobuf/BUILD.gn
@@ -599,6 +599,11 @@ if (current_toolchain == host_toolchain) {
configs -= [ "//build/config/compiler:chromium_code" ]
configs += [ "//build/config/compiler:no_chromium_code" ]
+ if (is_win) {
+ # https://crbug.com/703251
+ configs -= [ "//build/config/win:default_incremental_linking" ]
+ configs += [ "//build/config/win:no_incremental_linking" ]
+ }
cflags = protobuf_lite_cflags

Просмотреть файл

@ -2,7 +2,7 @@ diff --git a/content/browser/renderer_host/render_widget_host_view_base.cc b/con
index 029e72d..d079ba9 100644
--- a/content/browser/renderer_host/render_widget_host_view_base.cc
+++ b/content/browser/renderer_host/render_widget_host_view_base.cc
@@ -430,6 +430,35 @@ cc::FrameSinkId RenderWidgetHostViewBase::FrameSinkIdAtPoint(
@@ -414,6 +414,35 @@ cc::FrameSinkId RenderWidgetHostViewBase::FrameSinkIdAtPoint(
return cc::FrameSinkId();
}
@ -42,7 +42,7 @@ diff --git a/content/browser/renderer_host/render_widget_host_view_base.h b/cont
index 657ad20..47920a9 100644
--- a/content/browser/renderer_host/render_widget_host_view_base.h
+++ b/content/browser/renderer_host/render_widget_host_view_base.h
@@ -22,8 +22,10 @@
@@ -23,8 +23,10 @@
#include "cc/output/compositor_frame.h"
#include "cc/surfaces/surface_id.h"
#include "content/browser/renderer_host/event_with_latency_info.h"
@ -53,7 +53,7 @@ index 657ad20..47920a9 100644
#include "content/public/browser/render_widget_host_view.h"
#include "content/public/common/screen_info.h"
#include "ipc/ipc_listener.h"
@@ -66,8 +68,10 @@ class BrowserAccessibilityDelegate;
@@ -73,8 +75,10 @@ class BrowserAccessibilityDelegate;
class BrowserAccessibilityManager;
class RenderWidgetHostImpl;
class RenderWidgetHostViewBaseObserver;
@ -64,7 +64,7 @@ index 657ad20..47920a9 100644
class WebCursor;
struct NativeWebKeyboardEvent;
struct TextInputState;
@@ -116,6 +120,9 @@ class CONTENT_EXPORT RenderWidgetHostViewBase : public RenderWidgetHostView,
@@ -120,6 +124,9 @@ class CONTENT_EXPORT RenderWidgetHostViewBase : public RenderWidgetHostView,
void FocusedNodeTouched(const gfx::Point& location_dips_screen,
bool editable) override;
@ -74,7 +74,7 @@ index 657ad20..47920a9 100644
// This only needs to be overridden by RenderWidgetHostViewBase subclasses
// that handle content embedded within other RenderWidgetHostViews.
gfx::Point TransformPointToRootCoordSpace(const gfx::Point& point) override;
@@ -248,16 +255,21 @@ class CONTENT_EXPORT RenderWidgetHostViewBase : public RenderWidgetHostView,
@@ -263,16 +270,21 @@ class CONTENT_EXPORT RenderWidgetHostViewBase : public RenderWidgetHostView,
cc::SurfaceHittestDelegate* delegate,
const gfx::Point& point,
gfx::Point* transformed_point);

Просмотреть файл

@ -2,7 +2,7 @@ diff --git a/content/browser/renderer_host/render_widget_host_view_mac.mm b/cont
index b7f8bad5ef1a..3c074e7f5bcb 100644
--- a/content/browser/renderer_host/render_widget_host_view_mac.mm
+++ b/content/browser/renderer_host/render_widget_host_view_mac.mm
@@ -88,6 +88,7 @@
@@ -87,6 +87,7 @@
#include "ui/gfx/geometry/rect_conversions.h"
#include "ui/gfx/geometry/size_conversions.h"
#include "ui/gfx/scoped_ns_graphics_context_save_gstate_mac.h"
@ -10,7 +10,7 @@ index b7f8bad5ef1a..3c074e7f5bcb 100644
#include "ui/gl/gl_switches.h"
using content::BrowserAccessibility;
@@ -139,6 +140,11 @@ BOOL EventIsReservedBySystem(NSEvent* event) {
@@ -138,6 +139,11 @@ BOOL EventIsReservedBySystem(NSEvent* event) {
} // namespace
@ -22,7 +22,7 @@ index b7f8bad5ef1a..3c074e7f5bcb 100644
// These are not documented, so use only after checking -respondsToSelector:.
@interface NSApplication (UndocumentedSpeechMethods)
- (void)speakString:(NSString*)string;
@@ -465,7 +471,9 @@ float FlipYFromRectToScreen(float y, float rect_height) {
@@ -455,7 +461,9 @@ float FlipYFromRectToScreen(float y, float rect_height) {
background_layer_.reset([[CALayer alloc] init]);
// Set the default color to be white. This is the wrong thing to do, but many
// UI components expect this view to be opaque.
@ -32,7 +32,7 @@ index b7f8bad5ef1a..3c074e7f5bcb 100644
[cocoa_view_ setLayer:background_layer_];
[cocoa_view_ setWantsLayer:YES];
@@ -1846,6 +1854,9 @@ - (BOOL)acceptsMouseEventsWhenInactive {
@@ -1856,6 +1864,9 @@ - (BOOL)acceptsMouseEventsWhenInactive {
}
- (BOOL)acceptsFirstMouse:(NSEvent*)theEvent {
@ -42,7 +42,7 @@ index b7f8bad5ef1a..3c074e7f5bcb 100644
return [self acceptsMouseEventsWhenInactive];
}
@@ -2002,6 +2013,7 @@ - (BOOL)performKeyEquivalent:(NSEvent*)theEvent {
@@ -2028,6 +2039,7 @@ - (BOOL)performKeyEquivalent:(NSEvent*)theEvent {
if (EventIsReservedBySystem(theEvent))
return NO;
@ -50,7 +50,7 @@ index b7f8bad5ef1a..3c074e7f5bcb 100644
// If we return |NO| from this function, cocoa will send the key event to
// the menu and only if the menu does not process the event to |keyDown:|. We
// want to send the event to a renderer _before_ sending it to the menu, so
@@ -2015,6 +2027,7 @@ - (BOOL)performKeyEquivalent:(NSEvent*)theEvent {
@@ -2041,6 +2059,7 @@ - (BOOL)performKeyEquivalent:(NSEvent*)theEvent {
DCHECK(![[NSApp mainMenu] performKeyEquivalent:theEvent]);
return NO;
}
@ -58,7 +58,7 @@ index b7f8bad5ef1a..3c074e7f5bcb 100644
// Command key combinations are sent via performKeyEquivalent rather than
// keyDown:. We just forward this on and if WebCore doesn't want to handle
@@ -2809,6 +2822,9 @@ - (RenderWidgetHostViewMac*)renderWidgetHostViewMac {
@@ -2835,6 +2848,9 @@ - (RenderWidgetHostViewMac*)renderWidgetHostViewMac {
// move) for the given event. Customize here to be more selective about which
// key presses to autohide on.
+ (BOOL)shouldAutohideCursorForEvent:(NSEvent*)event {
@ -68,7 +68,7 @@ index b7f8bad5ef1a..3c074e7f5bcb 100644
return ([event type] == NSKeyDown &&
!([event modifierFlags] & NSCommandKeyMask)) ? YES : NO;
}
@@ -2965,9 +2981,11 @@ - (id)accessibilityFocusedUIElement {
@@ -2991,9 +3007,11 @@ - (id)accessibilityFocusedUIElement {
// Since this implementation doesn't have to wait any IPC calls, this doesn't
// make any key-typing jank. --hbono 7/23/09
//
@ -80,7 +80,7 @@ index b7f8bad5ef1a..3c074e7f5bcb 100644
- (NSArray *)validAttributesForMarkedText {
// This code is just copied from WebKit except renaming variables.
@@ -2976,7 +2994,9 @@ - (NSArray *)validAttributesForMarkedText {
@@ -3002,7 +3020,9 @@ - (NSArray *)validAttributesForMarkedText {
NSUnderlineStyleAttributeName,
NSUnderlineColorAttributeName,
NSMarkedClauseSegmentAttributeName,
@ -90,7 +90,7 @@ index b7f8bad5ef1a..3c074e7f5bcb 100644
nil]);
}
return validAttributesForMarkedText_.get();
@@ -3486,6 +3506,10 @@ - (BOOL)readSelectionFromPasteboard:(NSPasteboard*)pboard {
@@ -3512,6 +3532,10 @@ - (BOOL)readSelectionFromPasteboard:(NSPasteboard*)pboard {
}
- (BOOL)isOpaque {

2
patches/third_party/ffmpeg/build_gn.patch поставляемый
Просмотреть файл

@ -2,7 +2,7 @@ diff --git a/BUILD.gn b/BUILD.gn
index fb2b163..6891861 100755
--- a/BUILD.gn
+++ b/BUILD.gn
@@ -394,6 +394,13 @@ if (is_component_ffmpeg) {
@@ -407,6 +407,13 @@ if (is_component_ffmpeg) {
# So we can append below and assume they're defined.
ldflags = []

26
patches/third_party/swiftshader/gold_ifc.patch поставляемый Normal file
Просмотреть файл

@ -0,0 +1,26 @@
diff --git a/BUILD.gn b/BUILD.gn
index bfd68e2b..6557d38a 100644
--- a/BUILD.gn
+++ b/BUILD.gn
@@ -12,6 +12,8 @@
# See the License for the specific language governing permissions and
# limitations under the License.
+import("//build/config/compiler/compiler.gni")
+
config("swiftshader_config") {
defines = [ "STRICT_CONFORMANCE" ] # Disables OpenGL ES 3.0
@@ -88,6 +90,12 @@ config("swiftshader_config") {
"-Wl,--hash-style=both",
"-Wl,--gc-sections",
]
+ # A bug in the gold linker prevents using ICF on 32-bit (crbug.com/729532)
+ if (use_gold && target_cpu == "x86") {
+ ldflags += [
+ "-Wl,--icf=none",
+ ]
+ }
}
}
}

Просмотреть файл

@ -2,7 +2,7 @@ diff --git a/sandbox/linux/services/credentials.cc b/sandbox/linux/services/cred
index 50a109e..3ee9159 100644
--- a/sandbox/linux/services/credentials.cc
+++ b/sandbox/linux/services/credentials.cc
@@ -348,8 +348,10 @@ pid_t Credentials::ForkAndDropCapabilitiesInChild() {
@@ -358,8 +358,10 @@ pid_t Credentials::ForkAndDropCapabilitiesInChild() {
return pid;
}

Просмотреть файл

@ -2,7 +2,7 @@ diff --git a/include/v8.h b/include/v8.h
index baf44170f0..88cf5c7a91 100644
--- a/include/v8.h
+++ b/include/v8.h
@@ -6786,6 +6786,9 @@ class V8_EXPORT Isolate {
@@ -6967,6 +6967,9 @@ class V8_EXPORT Isolate {
V8_DEPRECATE_SOON("CpuProfiler should be created with CpuProfiler::New call.",
CpuProfiler* GetCpuProfiler());
@ -16,7 +16,7 @@ diff --git a/src/api.cc b/src/api.cc
index beefd61bdb..09ed5e0af8 100644
--- a/src/api.cc
+++ b/src/api.cc
@@ -7998,6 +7998,12 @@ CpuProfiler* Isolate::GetCpuProfiler() {
@@ -8121,6 +8121,12 @@ CpuProfiler* Isolate::GetCpuProfiler() {
}

Просмотреть файл

@ -2,7 +2,7 @@ diff --git a/BUILD.gn b/BUILD.gn
index 8895103..69f8bf5 100644
--- a/BUILD.gn
+++ b/BUILD.gn
@@ -137,25 +137,41 @@ config("internal_config") {
@@ -158,25 +158,41 @@ config("internal_config") {
if (is_component_build) {
defines = [ "BUILDING_V8_SHARED" ]
}
@ -46,7 +46,7 @@ index 8895103..69f8bf5 100644
defines = [ "USING_V8_BASE_SHARED" ]
}
libs = []
@@ -172,7 +188,7 @@ config("libsampler_config") {
@@ -193,7 +209,7 @@ config("libsampler_config") {
# This config should only be applied to code using V8 and not any V8 code
# itself.
config("external_config") {
@ -54,8 +54,8 @@ index 8895103..69f8bf5 100644
+ if (is_component_build || is_electron_build) {
defines = [ "USING_V8_SHARED" ]
}
include_dirs = [ "include" ]
@@ -2328,7 +2344,7 @@ v8_component("v8_libbase") {
include_dirs = [
@@ -2444,7 +2460,7 @@ v8_component("v8_libbase") {
defines = []
@ -64,7 +64,7 @@ index 8895103..69f8bf5 100644
defines = [ "BUILDING_V8_BASE_SHARED" ]
}
@@ -2418,7 +2434,7 @@ v8_component("v8_libplatform") {
@@ -2537,7 +2553,7 @@ v8_component("v8_libplatform") {
configs = [ ":internal_config_base" ]
@ -73,7 +73,7 @@ index 8895103..69f8bf5 100644
defines = [ "BUILDING_V8_PLATFORM_SHARED" ]
}
@@ -2482,6 +2498,8 @@ if (current_toolchain == v8_snapshot_toolchain) {
@@ -2601,6 +2617,8 @@ if (current_toolchain == v8_snapshot_toolchain) {
configs = [ ":internal_config" ]
@ -81,17 +81,8 @@ index 8895103..69f8bf5 100644
+
deps = [
":v8_base",
":v8_libbase",
@@ -2514,6 +2532,8 @@ v8_executable("mkpeephole") {
":internal_config",
]
+ configs += [ "//chromiumcontent:build_time_executable" ]
+
deps = [
":v8_libbase",
"//build/config/sanitizers:deps",
@@ -2588,7 +2608,7 @@ group("v8_fuzzers") {
":v8_builtins_setup",
@@ -2680,7 +2700,7 @@ group("v8_fuzzers") {
]
}
@ -112,7 +103,7 @@ index ea628e0..1b521f8 100644
declare_args() {
# Includes files needed for correctness fuzzing.
@@ -143,7 +144,13 @@ template("v8_executable") {
@@ -139,7 +140,13 @@ template("v8_executable") {
}
template("v8_component") {

Просмотреть файл

@ -2,16 +2,16 @@ diff --git a/src/snapshot/mksnapshot.cc b/src/snapshot/mksnapshot.cc
index f4362e5..2cc8f43 100644
--- a/src/snapshot/mksnapshot.cc
+++ b/src/snapshot/mksnapshot.cc
@@ -97,7 +97,7 @@ class SnapshotWriter {
@@ -108,7 +108,7 @@ class SnapshotWriter {
}
FILE* GetFileDescriptorOrDie(const char* filename) {
static FILE* GetFileDescriptorOrDie(const char* filename) {
- FILE* fp = base::OS::FOpen(filename, "wb");
+ FILE* fp = ::fopen(filename, "wb");
if (fp == NULL) {
i::PrintF("Unable to open file \"%s\" for writing.\n", filename);
exit(1);
@@ -112,7 +112,7 @@ class SnapshotWriter {
@@ -123,7 +123,7 @@ class SnapshotWriter {
char* GetExtraCode(char* filename, const char* description) {
if (filename == NULL || strlen(filename) == 0) return NULL;
::printf("Loading script for %s: %s\n", description, filename);

Просмотреть файл

@ -53,29 +53,3 @@ index 6f0e3d5ff5..134ff425e1 100644
static size_t find(const String& s, const char* needle) {
return s.find(needle);
}
diff --git a/third_party/inspector_protocol/lib/Parser_cpp.template b/third_party/inspector_protocol/lib/Parser_cpp.template
index 4bf6bebc46..f3dde5ac21 100644
--- a/third_party/inspector_protocol/lib/Parser_cpp.template
+++ b/third_party/inspector_protocol/lib/Parser_cpp.template
@@ -51,19 +51,13 @@ double charactersToDouble(const uint16_t* characters, size_t length, bool* ok)
buffer.push_back(static_cast<char>(characters[i]));
}
buffer.push_back('\0');
- char* endptr;
- double result = std::strtod(buffer.data(), &endptr);
- *ok = !(*endptr);
- return result;
+ return StringUtil::toDouble(buffer.data(), length, ok);
}
double charactersToDouble(const uint8_t* characters, size_t length, bool* ok)
{
std::string buffer(reinterpret_cast<const char*>(characters), length);
- char* endptr;
- double result = std::strtod(buffer.data(), &endptr);
- *ok = !(*endptr);
- return result;
+ return StringUtil::toDouble(buffer.data(), length, ok);
}
template<typename Char>

Просмотреть файл

@ -2,7 +2,7 @@ diff --git a/content/browser/web_contents/web_contents_impl.cc b/content/browser
index cf3733f..065df39 100644
--- a/content/browser/web_contents/web_contents_impl.cc
+++ b/content/browser/web_contents/web_contents_impl.cc
@@ -1576,6 +1576,12 @@ void WebContentsImpl::Init(const WebContents::CreateParams& params) {
@@ -1581,6 +1581,12 @@ void WebContentsImpl::Init(const WebContents::CreateParams& params) {
std::string unique_name;
frame_tree_.root()->SetFrameName(params.main_frame_name, unique_name);
@ -15,7 +15,7 @@ index cf3733f..065df39 100644
WebContentsViewDelegate* delegate =
GetContentClient()->browser()->GetWebContentsViewDelegate(this);
@@ -1586,6 +1592,7 @@ void WebContentsImpl::Init(const WebContents::CreateParams& params) {
@@ -1591,6 +1597,7 @@ void WebContentsImpl::Init(const WebContents::CreateParams& params) {
view_.reset(CreateWebContentsView(this, delegate,
&render_view_host_delegate_view_));
}
@ -23,22 +23,6 @@ index cf3733f..065df39 100644
if (browser_plugin_guest_ && !GuestMode::IsCrossProcessFrameGuest(this)) {
view_.reset(new WebContentsViewGuest(this, browser_plugin_guest_.get(),
@@ -4858,6 +4865,7 @@ void WebContentsImpl::RendererUnresponsive(
// We might have been waiting for both beforeunload and unload ACK.
// Check if tab is to be unloaded first.
if (rfhi->IsWaitingForUnloadACK()) {
+#if 0
// Hang occurred while firing the unload handler.
// Pretend the handler fired so tab closing continues as if it had.
GetRenderViewHost()->set_sudden_termination_allowed(true);
@@ -4869,6 +4877,7 @@ void WebContentsImpl::RendererUnresponsive(
// to recover. Pretend the unload listeners have all fired and close
// the tab.
Close();
+#endif
return;
}
diff --git a/content/browser/web_contents/web_contents_view_guest.cc b/content/browser/web_contents/web_contents_view_guest.cc
index a93bc37..70f2f3b 100644
--- a/content/browser/web_contents/web_contents_view_guest.cc

Просмотреть файл

@ -2,19 +2,19 @@ diff --git a/content/renderer/renderer_blink_platform_impl.cc b/content/renderer
index 6cfd9df..ec79d1c 100644
--- a/content/renderer/renderer_blink_platform_impl.cc
+++ b/content/renderer/renderer_blink_platform_impl.cc
@@ -997,9 +997,9 @@ RendererBlinkPlatformImpl::createOffscreenGraphicsContext3DProvider(
web_attributes.supportStencil || web_attributes.supportAntialias;
@@ -1020,9 +1020,9 @@ RendererBlinkPlatformImpl::createOffscreenGraphicsContext3DProvider(
web_attributes.support_stencil || web_attributes.support_antialias;
attributes.sample_buffers = 0;
attributes.bind_generates_resource = false;
- // Prefer discrete GPU for WebGL.
- attributes.gpu_preference = gl::PreferDiscreteGpu;
-
+ attributes.gpu_preference = web_attributes.preferIntegratedGpu
+ attributes.gpu_preference = web_attributes.prefer_integrated_gpu
+ ? gl::PreferIntegratedGpu
+ : gl::PreferDiscreteGpu;
attributes.fail_if_major_perf_caveat =
web_attributes.failIfMajorPerformanceCaveat;
DCHECK_GT(web_attributes.webGLVersion, 0u);
web_attributes.fail_if_major_performance_caveat;
DCHECK_GT(web_attributes.web_gl_version, 0u);
diff --git a/third_party/WebKit/Source/core/html/canvas/CanvasContextCreationAttributes.idl b/third_party/WebKit/Source/core/html/canvas/CanvasContextCreationAttributes.idl
index 752714c..058b969 100644
--- a/third_party/WebKit/Source/core/html/canvas/CanvasContextCreationAttributes.idl
@ -52,13 +52,13 @@ index 8c07036..223ba31 100644
return result;
}
@@ -26,6 +27,7 @@ Platform::ContextAttributes toPlatformContextAttributes(
unsigned webGLVersion,
bool supportOwnOffscreenSurface) {
unsigned web_gl_version,
bool support_own_offscreen_surface) {
Platform::ContextAttributes result;
+ result.preferIntegratedGpu = attrs.powerPreference() == "low-power";
result.failIfMajorPerformanceCaveat = attrs.failIfMajorPerformanceCaveat();
result.webGLVersion = webGLVersion;
if (supportOwnOffscreenSurface) {
+ result.prefer_integrated_gpu = attrs.powerPreference() == "low-power";
result.fail_if_major_performance_caveat =
attrs.failIfMajorPerformanceCaveat();
result.web_gl_version = web_gl_version;
diff --git a/third_party/WebKit/Source/modules/webgl/WebGLContextAttributes.idl b/third_party/WebKit/Source/modules/webgl/WebGLContextAttributes.idl
index 9a48073..5196a53 100644
--- a/third_party/WebKit/Source/modules/webgl/WebGLContextAttributes.idl
@ -87,11 +87,11 @@ diff --git a/third_party/WebKit/public/platform/Platform.h b/third_party/WebKit/
index 2cd7334..98ecb84 100644
--- a/third_party/WebKit/public/platform/Platform.h
+++ b/third_party/WebKit/public/platform/Platform.h
@@ -458,6 +458,7 @@ class BLINK_PLATFORM_EXPORT Platform {
@@ -466,6 +466,7 @@ class BLINK_PLATFORM_EXPORT Platform {
// GPU ----------------------------------------------------------------
//
struct ContextAttributes {
+ bool preferIntegratedGpu = false;
bool failIfMajorPerformanceCaveat = false;
unsigned webGLVersion = 0;
+ bool prefer_integrated_gpu = false;
bool fail_if_major_performance_caveat = false;
unsigned web_gl_version = 0;
// Offscreen contexts usually share a surface for the default frame buffer

Просмотреть файл

@ -2,7 +2,7 @@ diff --git a/content/browser/web_contents/web_contents_view_aura.cc b/content/br
index 1bfef2c..0ba2260 100644
--- a/content/browser/web_contents/web_contents_view_aura.cc
+++ b/content/browser/web_contents/web_contents_view_aura.cc
@@ -671,6 +671,7 @@ gfx::NativeView WebContentsViewAura::GetRenderWidgetHostViewParent() const {
@@ -675,6 +675,7 @@ gfx::NativeView WebContentsViewAura::GetRenderWidgetHostViewParent() const {
bool WebContentsViewAura::IsValidDragTarget(
RenderWidgetHostImpl* target_rwh) const {

Просмотреть файл

@ -2,7 +2,7 @@ diff --git a/content/public/renderer/content_renderer_client.h b/content/public/
index 0764782..b3cd794 100644
--- a/content/public/renderer/content_renderer_client.h
+++ b/content/public/renderer/content_renderer_client.h
@@ -346,6 +346,11 @@ class CONTENT_EXPORT ContentRendererClient {
@@ -361,6 +361,11 @@ class CONTENT_EXPORT ContentRendererClient {
virtual void DidInitializeWorkerContextOnWorkerThread(
v8::Local<v8::Context> context) {}
@ -18,28 +18,28 @@ diff --git a/content/renderer/renderer_blink_platform_impl.cc b/content/renderer
index f30b509..6cfd9df 100644
--- a/content/renderer/renderer_blink_platform_impl.cc
+++ b/content/renderer/renderer_blink_platform_impl.cc
@@ -1257,6 +1257,12 @@ RendererBlinkPlatformImpl::trialTokenValidator() {
@@ -1282,6 +1282,12 @@ RendererBlinkPlatformImpl::trialTokenValidator() {
return &trial_token_validator_;
}
+void RendererBlinkPlatformImpl::workerContextWillDestroy(
+void RendererBlinkPlatformImpl::WorkerContextWillDestroy(
+ const v8::Local<v8::Context>& worker) {
+ GetContentClient()->renderer()->WillDestroyWorkerContextOnWorkerThread(
+ worker);
+}
+
void RendererBlinkPlatformImpl::workerContextCreated(
void RendererBlinkPlatformImpl::WorkerContextCreated(
const v8::Local<v8::Context>& worker) {
GetContentClient()->renderer()->DidInitializeWorkerContextOnWorkerThread(
diff --git a/content/renderer/renderer_blink_platform_impl.h b/content/renderer/renderer_blink_platform_impl.h
index df62a99..75a3588 100644
--- a/content/renderer/renderer_blink_platform_impl.h
+++ b/content/renderer/renderer_blink_platform_impl.h
@@ -197,6 +197,7 @@ class CONTENT_EXPORT RendererBlinkPlatformImpl : public BlinkPlatformImpl {
@@ -202,6 +202,7 @@ class CONTENT_EXPORT RendererBlinkPlatformImpl : public BlinkPlatformImpl {
blink::WebTrialTokenValidator* trialTokenValidator() override;
void workerContextCreated(const v8::Local<v8::Context>& worker) override;
+ void workerContextWillDestroy(const v8::Local<v8::Context>& worker) override;
blink::WebTrialTokenValidator* TrialTokenValidator() override;
void WorkerContextCreated(const v8::Local<v8::Context>& worker) override;
+ void WorkerContextWillDestroy(const v8::Local<v8::Context>& worker) override;
// Set the PlatformEventObserverBase in |platform_event_observers_| associated
// with |type| to |observer|. If there was already an observer associated to
@ -47,28 +47,28 @@ diff --git a/third_party/WebKit/Source/core/workers/WorkerThread.cpp b/third_par
index e76c01f..560566a 100644
--- a/third_party/WebKit/Source/core/workers/WorkerThread.cpp
+++ b/third_party/WebKit/Source/core/workers/WorkerThread.cpp
@@ -512,6 +512,12 @@ void WorkerThread::prepareForShutdownOnWorkerThread() {
setExitCode(lock, ExitCode::GracefullyTerminated);
@@ -526,6 +526,12 @@ void WorkerThread::prepareForShutdownOnWorkerThread() {
SetExitCode(lock, ExitCode::kGracefullyTerminated);
}
+ {
+ v8::HandleScope handleScope(isolate());
+ Platform::current()->workerContextWillDestroy(
+ globalScope()->scriptController()->context());
+ v8::HandleScope handle_scope(GetIsolate());
+ Platform::Current()->WorkerContextWillDestroy(
+ GlobalScope()->ScriptController()->GetContext());
+ }
+
m_inspectorTaskRunner->kill();
workerReportingProxy().willDestroyWorkerGlobalScope();
probe::allAsyncTasksCanceled(globalScope());
inspector_task_runner_->Kill();
GetWorkerReportingProxy().WillDestroyWorkerGlobalScope();
probe::AllAsyncTasksCanceled(GlobalScope());
diff --git a/third_party/WebKit/public/platform/Platform.h b/third_party/WebKit/public/platform/Platform.h
index 98ecb84..0779d4a 100644
--- a/third_party/WebKit/public/platform/Platform.h
+++ b/third_party/WebKit/public/platform/Platform.h
@@ -588,6 +588,7 @@ class BLINK_PLATFORM_EXPORT Platform {
virtual void didStartWorkerThread() {}
virtual void willStopWorkerThread() {}
virtual void workerContextCreated(const v8::Local<v8::Context>& worker) {}
+ virtual void workerContextWillDestroy(const v8::Local<v8::Context>& worker) {}
virtual bool allowScriptExtensionForServiceWorker(const WebURL& scriptUrl) {
@@ -596,6 +596,7 @@ class BLINK_PLATFORM_EXPORT Platform {
virtual void DidStartWorkerThread() {}
virtual void WillStopWorkerThread() {}
virtual void WorkerContextCreated(const v8::Local<v8::Context>& worker) {}
+ virtual void WorkerContextWillDestroy(const v8::Local<v8::Context>& worker) {}
virtual bool AllowScriptExtensionForServiceWorker(const WebURL& script_url) {
return false;
}

Просмотреть файл

@ -43,6 +43,11 @@ def main():
out_dir = get_output_dir(SOURCE_ROOT, target_arch, component)
target = 'chromiumcontent:chromiumcontent'
subprocess.check_call([NINJA, '-C', os.path.relpath(out_dir), target], env=env)
if component == 'static_library':
subenv = env.copy()
subenv['CHROMIUMCONTENT_2ND_PASS'] = '1'
target = 'chromiumcontent:libs'
subprocess.check_call([NINJA, '-C', os.path.relpath(out_dir), target], env=subenv)
def parse_args():

Просмотреть файл

@ -3,14 +3,20 @@
set -e
set -o pipefail
# Workaround for massive amounts of the following being logged in binutils 2.22:
# /usr/bin/arm-linux-gnueabihf-ld: BFD (GNU Binutils for Ubuntu) 2.22 assertion fail ../../bfd/elf32-arm.c:12049
#
# This should be fixed in binutils 2.2.4, https://sourceware.org/bugzilla/show_bug.cgi?id=14189
# and can be removed when CI is upgraded to that version or later.
script/cibuild 2>&1 | grep -v "elf32-arm.c:12049"
# Delete generated archives
rm -rf dist
rm -rf libchromiumcontent.zip
rm -rf libchromiumcontent-static.zip
docker build \
--force-rm \
--tag libchromiumcontent-linux \
.
docker run \
--rm \
--env TARGET_ARCH="$TARGET_ARCH" \
--user "$UID" \
--volume "$PWD":/workspace/libchromiumcontent \
--volume /var/lib/jenkins/config:/config \
--workdir /workspace/libchromiumcontent \
libchromiumcontent-linux script/cibuild

Просмотреть файл

@ -139,6 +139,7 @@ BINARIES_SHARED_LIBRARY = {
os.path.join('obj', 'pdf', 'pdf.lib'),
os.path.join('obj', 'sandbox', 'win', 'sandbox_cc.pdb'),
os.path.join('obj', 'sandbox', 'win', 'sandbox.lib'),
os.path.join('obj', 'third_party', 'freetype', 'freetype_c.pdb'),
os.path.join('obj', 'third_party', 'pdfium', 'pdfium_cc.pdb'),
os.path.join('obj', 'third_party', 'pdfium', 'pdfium.lib'),
os.path.join('obj', 'third_party', 'pdfium', 'fdrm_cc.pdb'),
@ -167,15 +168,15 @@ BINARIES_SHARED_LIBRARY = {
os.path.join('obj', 'third_party', 'pdfium', 'pdfwindow.lib'),
os.path.join('obj', 'third_party', 'pdfium', 'third_party', 'bigint_cc.pdb'),
os.path.join('obj', 'third_party', 'pdfium', 'third_party', 'fx_agg_cc.pdb'),
os.path.join('obj', 'third_party', 'pdfium', 'third_party', 'fx_freetype_c.pdb'),
os.path.join('obj', 'third_party', 'pdfium', 'third_party', 'fx_freetype.lib'),
os.path.join('obj', 'third_party', 'pdfium', 'third_party', 'fx_lcms2_c.pdb'),
os.path.join('obj', 'third_party', 'pdfium', 'third_party', 'fx_libopenjpeg_c.pdb'),
os.path.join('obj', 'third_party', 'pdfium', 'third_party', 'fx_zlib_c.pdb'),
os.path.join('obj', 'third_party', 'pdfium', 'third_party', 'pdfium_base_cc.pdb'),
os.path.join('obj', 'third_party', 'webrtc', 'base', 'rtc_base_cc.pdb'),
os.path.join('obj', 'third_party', 'webrtc', 'base', 'rtc_base.lib'),
os.path.join('obj', 'third_party', 'webrtc', 'base', 'rtc_base_approved_cc.pdb'),
os.path.join('obj', 'third_party', 'webrtc', 'base', 'rtc_base_approved.lib'),
os.path.join('obj', 'third_party', 'zlib', 'zlib_c.pdb'),
os.path.join('obj', 'third_party', 'zlib', 'zlib_x86_simd_c.pdb'),
os.path.join('obj', 'ui', 'events', 'dom_keycode_converter_cc.pdb'),
os.path.join('obj', 'ui', 'events', 'dom_keycode_converter.lib'),
# PDB files for libraries that generated under obj/chromiumcontent:
@ -285,6 +286,7 @@ GENERATED_INCLUDE_DIRS = [
'base',
'cc',
'content',
'device',
'gpu',
'ipc',
'mojo',

Просмотреть файл

@ -0,0 +1,651 @@
#!/bin/bash -e
# Copyright (c) 2012 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
# Script to install everything needed to build chromium (well, ideally, anyway)
# See https://chromium.googlesource.com/chromium/src/+/master/docs/linux_build_instructions.md
usage() {
echo "Usage: $0 [--options]"
echo "Options:"
echo "--[no-]syms: enable or disable installation of debugging symbols"
echo "--lib32: enable installation of 32-bit libraries, e.g. for V8 snapshot"
echo "--[no-]arm: enable or disable installation of arm cross toolchain"
echo "--[no-]chromeos-fonts: enable or disable installation of Chrome OS"\
"fonts"
echo "--[no-]nacl: enable or disable installation of prerequisites for"\
"building standalone NaCl and all its toolchains"
echo "--no-prompt: silently select standard options/defaults"
echo "--quick-check: quickly try to determine if dependencies are installed"
echo " (this avoids interactive prompts and sudo commands,"
echo " so might not be 100% accurate)"
echo "--unsupported: attempt installation even on unsupported systems"
echo "Script will prompt interactively if options not given."
exit 1
}
# Waits for the user to press 'Y' or 'N'. Either uppercase of lowercase is
# accepted. Returns 0 for 'Y' and 1 for 'N'. If an optional parameter has
# been provided to yes_no(), the function also accepts RETURN as a user input.
# The parameter specifies the exit code that should be returned in that case.
# The function will echo the user's selection followed by a newline character.
# Users can abort the function by pressing CTRL-C. This will call "exit 1".
yes_no() {
if [ 0 -ne "${do_default-0}" ] ; then
[ $1 -eq 0 ] && echo "Y" || echo "N"
return $1
fi
local c
while :; do
c="$(trap 'stty echo -iuclc icanon 2>/dev/null' EXIT INT TERM QUIT
stty -echo iuclc -icanon 2>/dev/null
dd count=1 bs=1 2>/dev/null | od -An -tx1)"
case "$c" in
" 0a") if [ -n "$1" ]; then
[ $1 -eq 0 ] && echo "Y" || echo "N"
return $1
fi
;;
" 79") echo "Y"
return 0
;;
" 6e") echo "N"
return 1
;;
"") echo "Aborted" >&2
exit 1
;;
*) # The user pressed an unrecognized key. As we are not echoing
# any incorrect user input, alert the user by ringing the bell.
(tput bel) 2>/dev/null
;;
esac
done
}
# Checks whether a particular package is available in the repos.
# USAGE: $ package_exists <package name>
package_exists() {
[ ! -z "`apt-cache search --names-only "$1"`" ]
}
# These default to on because (some) bots need them and it keeps things
# simple for the bot setup if all bots just run the script in its default
# mode. Developers who don't want stuff they don't need installed on their
# own workstations can pass --no-arm --no-nacl when running the script.
do_inst_arm=1
do_inst_nacl=1
while test "$1" != ""
do
case "$1" in
--syms) do_inst_syms=1;;
--no-syms) do_inst_syms=0;;
--lib32) do_inst_lib32=1;;
--arm) do_inst_arm=1;;
--no-arm) do_inst_arm=0;;
--chromeos-fonts) do_inst_chromeos_fonts=1;;
--no-chromeos-fonts) do_inst_chromeos_fonts=0;;
--nacl) do_inst_nacl=1;;
--no-nacl) do_inst_nacl=0;;
--no-prompt) do_default=1
do_quietly="-qq --assume-yes"
;;
--quick-check) do_quick_check=1;;
--unsupported) do_unsupported=1;;
*) usage;;
esac
shift
done
if test "$do_inst_arm" = "1"; then
do_inst_lib32=1
fi
# Check for lsb_release command in $PATH
if ! which lsb_release > /dev/null; then
echo "ERROR: lsb_release not found in \$PATH" >&2
exit 1;
fi
distro_codename=$(lsb_release --codename --short)
distro_id=$(lsb_release --id --short)
supported_codenames="(trusty|xenial|yakkety|zesty)"
supported_ids="(Debian)"
if [ 0 -eq "${do_unsupported-0}" ] && [ 0 -eq "${do_quick_check-0}" ] ; then
if [[ ! $distro_codename =~ $supported_codenames &&
! $distro_id =~ $supported_ids ]]; then
echo -e "ERROR: The only supported distros are\n" \
"\tUbuntu 14.04 (trusty)\n" \
"\tUbuntu 16.04 (xenial)\n" \
"\tUbuntu 16.10 (yakkety)\n" \
"\tUbuntu 17.04 (zesty)\n" \
"\tDebian 8 (jessie) or later" >&2
exit 1
fi
if ! uname -m | egrep -q "i686|x86_64"; then
echo "Only x86 architectures are currently supported" >&2
exit
fi
fi
if [ "x$(id -u)" != x0 ] && [ 0 -eq "${do_quick_check-0}" ]; then
echo "Running as non-root user."
echo "You might have to enter your password one or more times for 'sudo'."
echo
fi
# Packages needed for chromeos only
chromeos_dev_list="libbluetooth-dev libxkbcommon-dev realpath"
# Packages needed for development
dev_list="\
bison
cdbs
curl
dpkg-dev
elfutils
devscripts
fakeroot
flex
fonts-ipafont
fonts-thai-tlwg
g++
git-core
git-svn
gperf
libasound2-dev
libbrlapi-dev
libav-tools
libbz2-dev
libcairo2-dev
libcap-dev
libcups2-dev
libcurl4-gnutls-dev
libdrm-dev
libelf-dev
libffi-dev
libgconf2-dev
libglib2.0-dev
libglu1-mesa-dev
libgnome-keyring-dev
libgtk2.0-dev
libgtk-3-dev
libkrb5-dev
libnspr4-dev
libnss3-dev
libpam0g-dev
libpci-dev
libpulse-dev
libsctp-dev
libspeechd-dev
libsqlite3-dev
libssl-dev
libudev-dev
libwww-perl
libxslt1-dev
libxss-dev
libxt-dev
libxtst-dev
openbox
patch
perl
pkg-config
python
python-cherrypy3
python-crypto
python-dev
python-numpy
python-opencv
python-openssl
python-psutil
python-yaml
rpm
ruby
subversion
ttf-dejavu-core
wdiff
xcompmgr
zip
$chromeos_dev_list
"
# 64-bit systems need a minimum set of 32-bit compat packages for the pre-built
# NaCl binaries.
if file -L /sbin/init | grep -q 'ELF 64-bit'; then
dev_list="${dev_list} libc6-i386 lib32gcc1 lib32stdc++6"
fi
# Run-time libraries required by chromeos only
chromeos_lib_list="libpulse0 libbz2-1.0"
# Full list of required run-time libraries
lib_list="\
libatk1.0-0
libc6
libasound2
libcairo2
libcap2
libcups2
libexpat1
libffi6
libfontconfig1
libfreetype6
libglib2.0-0
libgnome-keyring0
libgtk2.0-0
libgtk-3-0
libpam0g
libpango1.0-0
libpci3
libpcre3
libpixman-1-0
libspeechd2
libstdc++6
libsqlite3-0
libx11-6
libx11-xcb1
libxau6
libxcb1
libxcomposite1
libxcursor1
libxdamage1
libxdmcp6
libxext6
libxfixes3
libxi6
libxinerama1
libxrandr2
libxrender1
libxtst6
zlib1g
$chromeos_lib_list
"
# Debugging symbols for all of the run-time libraries
dbg_list="\
libatk1.0-dbg
libc6-dbg
libcairo2-dbg
libffi6-dbg
libfontconfig1-dbg
libglib2.0-0-dbg
libgtk2.0-0-dbg
libgtk-3-0-dbg
libpango1.0-0-dbg
libpcre3-dbg
libpixman-1-0-dbg
libsqlite3-0-dbg
libx11-6-dbg
libx11-xcb1-dbg
libxau6-dbg
libxcb1-dbg
libxcomposite1-dbg
libxcursor1-dbg
libxdamage1-dbg
libxdmcp6-dbg
libxext6-dbg
libxi6-dbg
libxinerama1-dbg
libxrandr2-dbg
libxrender1-dbg
libxtst6-dbg
zlib1g-dbg
"
if [[ ! $distro_codename =~ "yakkety" ]]; then
dbg_list="${dbg_list} libxfixes3-dbg"
fi
# Find the proper version of libstdc++6-4.x-dbg.
if [ "x$distro_codename" = "xtrusty" ]; then
dbg_list="${dbg_list} libstdc++6-4.8-dbg"
else
dbg_list="${dbg_list} libstdc++6-4.9-dbg"
fi
# 32-bit libraries needed e.g. to compile V8 snapshot for Android or armhf
lib32_list="linux-libc-dev:i386 libpci3:i386"
# arm cross toolchain packages needed to build chrome on armhf
EM_REPO="deb http://emdebian.org/tools/debian/ jessie main"
EM_SOURCE=$(cat <<EOF
# Repo added by Chromium $0
${EM_REPO}
# deb-src http://emdebian.org/tools/debian/ jessie main
EOF
)
EM_ARCHIVE_KEY_FINGER="084C6C6F39159EDB67969AA87DE089671804772E"
GPP_ARM_PACKAGE="g++-arm-linux-gnueabihf"
case $distro_codename in
jessie)
eval $(apt-config shell APT_SOURCESDIR 'Dir::Etc::sourceparts/d')
CROSSTOOLS_LIST="${APT_SOURCESDIR}/crosstools.list"
arm_list="libc6-dev:armhf
linux-libc-dev:armhf"
if test "$do_inst_arm" = "1"; then
if $(dpkg-query -W ${GPP_ARM_PACKAGE} &>/dev/null); then
arm_list+=" ${GPP_ARM_PACKAGE}"
else
echo "The Debian Cross-toolchains repository is necessary to"
echo "cross-compile Chromium for arm."
echo -n "Do you want me to add it for you (y/N) "
if yes_no 1; then
gpg --keyserver pgp.mit.edu --recv-keys ${EM_ARCHIVE_KEY_FINGER}
gpg -a --export ${EM_ARCHIVE_KEY_FINGER} | apt-key add -
if ! grep "^${EM_REPO}" "${CROSSTOOLS_LIST}" &>/dev/null; then
echo "${EM_SOURCE}" | tee -a "${CROSSTOOLS_LIST}" >/dev/null
fi
arm_list+=" ${GPP_ARM_PACKAGE}"
fi
fi
fi
;;
# All necessary ARM packages are available on the default repos on
# Debian 9 and later.
*)
arm_list="binutils-aarch64-linux-gnu
libc6-dev-armhf-cross
linux-libc-dev-armhf-cross
${GPP_ARM_PACKAGE}"
;;
esac
# Work around for dependency issue Ubuntu/Trusty: http://crbug.com/435056
case $distro_codename in
trusty)
arm_list+=" g++-4.8-multilib-arm-linux-gnueabihf
gcc-4.8-multilib-arm-linux-gnueabihf"
;;
xenial|yakkety|zesty)
arm_list+=" g++-5-multilib-arm-linux-gnueabihf
gcc-5-multilib-arm-linux-gnueabihf
gcc-arm-linux-gnueabihf"
;;
esac
# Packages to build NaCl, its toolchains, and its ports.
naclports_list="ant autoconf bison cmake gawk intltool xutils-dev xsltproc"
nacl_list="\
g++-mingw-w64-i686
lib32z1-dev
libasound2:i386
libcap2:i386
libelf-dev:i386
libfontconfig1:i386
libgconf-2-4:i386
libglib2.0-0:i386
libgpm2:i386
libgtk2.0-0:i386
libgtk-3-0:i386
libncurses5:i386
lib32ncurses5-dev
libnss3:i386
libpango1.0-0:i386
libssl-dev:i386
libtinfo-dev
libtinfo-dev:i386
libtool
libxcomposite1:i386
libxcursor1:i386
libxdamage1:i386
libxi6:i386
libxrandr2:i386
libxss1:i386
libxtst6:i386
texinfo
xvfb
${naclports_list}
"
if package_exists libssl1.0.0; then
nacl_list="${nacl_list} libssl1.0.0:i386"
else
nacl_list="${nacl_list} libssl1.0.2:i386"
fi
# Find the proper version of packages that depend on mesa. Only one -lts variant
# of mesa can be installed and everything that depends on it must match.
# Query for the name and status of all mesa LTS variants, filter for only
# installed packages, extract just the name, and eliminate duplicates (there can
# be more than one with the same name in the case of multiarch). Expand into an
# array.
mesa_packages=($(dpkg-query -Wf'${package} ${status}\n' \
libgl1-mesa-glx-lts-\* 2>/dev/null | \
grep " ok installed" | cut -d " " -f 1 | sort -u))
if [ "${#mesa_packages[@]}" -eq 0 ]; then
mesa_variant=""
elif [ "${#mesa_packages[@]}" -eq 1 ]; then
# Strip the base package name and leave just "-lts-whatever"
mesa_variant="${mesa_packages[0]#libgl1-mesa-glx}"
else
echo "ERROR: unable to determine which libgl1-mesa-glx variant is installed."
exit 1
fi
dev_list="${dev_list} libgbm-dev${mesa_variant}
libgles2-mesa-dev${mesa_variant} libgl1-mesa-dev${mesa_variant}
mesa-common-dev${mesa_variant}"
nacl_list="${nacl_list} libgl1-mesa-glx${mesa_variant}:i386"
# Some package names have changed over time
if package_exists libpng12-0; then
lib_list="${lib_list} libpng12-0"
else
lib_list="${lib_list} libpng16-16"
fi
if package_exists libnspr4-dbg; then
dbg_list="${dbg_list} libnspr4-dbg libnss3-dbg"
lib_list="${lib_list} libnspr4 libnss3"
else
dbg_list="${dbg_list} libnspr4-0d-dbg libnss3-1d-dbg"
lib_list="${lib_list} libnspr4-0d libnss3-1d"
fi
if package_exists libjpeg-dev; then
dev_list="${dev_list} libjpeg-dev"
else
dev_list="${dev_list} libjpeg62-dev"
fi
if package_exists libudev1; then
dev_list="${dev_list} libudev1"
nacl_list="${nacl_list} libudev1:i386"
else
dev_list="${dev_list} libudev0"
nacl_list="${nacl_list} libudev0:i386"
fi
if package_exists libbrlapi0.6; then
dev_list="${dev_list} libbrlapi0.6"
else
dev_list="${dev_list} libbrlapi0.5"
fi
if package_exists apache2-bin; then
dev_list="${dev_list} apache2-bin"
else
dev_list="${dev_list} apache2.2-bin"
fi
if package_exists xfonts-mathml; then
dev_list="${dev_list} xfonts-mathml"
fi
if package_exists fonts-indic; then
dev_list="${dev_list} fonts-indic"
else
dev_list="${dev_list} ttf-indic-fonts"
fi
if package_exists php7.0-cgi; then
dev_list="${dev_list} php7.0-cgi libapache2-mod-php7.0"
else
dev_list="${dev_list} php5-cgi libapache2-mod-php5"
fi
# ttf-mscorefonts-installer is in the Debian contrib repo, which has
# dependencies on non-free software. Install it only if the user has already
# enabled contrib.
if package_exists ttf-mscorefonts-installer; then
dev_list="${dev_list} ttf-mscorefonts-installer"
elif package_exists msttcorefonts; then
dev_list="${dev_list} msttcorefonts"
fi
# Ubuntu 16.04 has this package deleted.
if package_exists ttf-kochi-gothic; then
dev_list="${dev_list} ttf-kochi-gothic"
fi
# Ubuntu 16.04 has this package deleted.
if package_exists ttf-kochi-mincho; then
dev_list="${dev_list} ttf-kochi-mincho"
fi
# Some packages are only needed if the distribution actually supports
# installing them.
if package_exists appmenu-gtk; then
lib_list="$lib_list appmenu-gtk"
fi
# When cross building for arm/Android on 64-bit systems the host binaries
# that are part of v8 need to be compiled with -m32 which means
# that basic multilib support is needed.
if file -L /sbin/init | grep -q 'ELF 64-bit'; then
# gcc-multilib conflicts with the arm cross compiler (at least in trusty) but
# g++-X.Y-multilib gives us the 32-bit support that we need. Find out the
# appropriate value of X and Y by seeing what version the current
# distribution's g++-multilib package depends on.
multilib_package=$(apt-cache depends g++-multilib --important | \
grep -E --color=never --only-matching '\bg\+\+-[0-9.]+-multilib\b')
lib32_list="$lib32_list $multilib_package"
fi
if test "$do_inst_syms" = "" && test 0 -eq ${do_quick_check-0}
then
echo "This script installs all tools and libraries needed to build Chromium."
echo ""
echo "For most of the libraries, it can also install debugging symbols, which"
echo "will allow you to debug code in the system libraries. Most developers"
echo "won't need these symbols."
echo -n "Do you want me to install them for you (y/N) "
if yes_no 1; then
do_inst_syms=1
fi
fi
if test "$do_inst_syms" = "1"; then
echo "Including debugging symbols."
# Many debug packages are not available in Debian stretch,
# so exclude the ones that are missing.
available_dbg_packages=""
for package in ${dbg_list}; do
if package_exists ${package}; then
available_dbg_packages="${available_dbg_packages} ${package}"
fi
done
dbg_list="${available_dbg_packages}"
else
echo "Skipping debugging symbols."
dbg_list=
fi
if test "$do_inst_lib32" = "1" ; then
echo "Including 32-bit libraries for ARM/Android."
else
echo "Skipping 32-bit libraries for ARM/Android."
lib32_list=
fi
if test "$do_inst_arm" = "1" ; then
echo "Including ARM cross toolchain."
else
echo "Skipping ARM cross toolchain."
arm_list=
fi
if test "$do_inst_nacl" = "1"; then
echo "Including NaCl, NaCl toolchain, NaCl ports dependencies."
else
echo "Skipping NaCl, NaCl toolchain, NaCl ports dependencies."
nacl_list=
fi
# The `sort -r -s -t: -k2` sorts all the :i386 packages to the front, to avoid
# confusing dpkg-query (crbug.com/446172).
packages="$(
echo "${dev_list} ${lib_list} ${dbg_list} ${lib32_list} ${arm_list}"\
"${nacl_list}" | tr " " "\n" | sort -u | sort -r -s -t: -k2 | tr "\n" " "
)"
if [ 1 -eq "${do_quick_check-0}" ] ; then
if ! missing_packages="$(dpkg-query -W -f ' ' ${packages} 2>&1)"; then
# Distinguish between packages that actually aren't available to the
# system (i.e. not in any repo) and packages that just aren't known to
# dpkg (i.e. managed by apt).
missing_packages="$(echo "${missing_packages}" | awk '{print $NF}')"
not_installed=""
unknown=""
for p in ${missing_packages}; do
if apt-cache show ${p} > /dev/null 2>&1; then
not_installed="${p}\n${not_installed}"
else
unknown="${p}\n${unknown}"
fi
done
if [ -n "${not_installed}" ]; then
echo "WARNING: The following packages are not installed:"
echo -e "${not_installed}" | sed -e "s/^/ /"
fi
if [ -n "${unknown}" ]; then
echo "WARNING: The following packages are unknown to your system"
echo "(maybe missing a repo or need to 'sudo apt-get update'):"
echo -e "${unknown}" | sed -e "s/^/ /"
fi
exit 1
fi
exit 0
fi
if test "$do_inst_lib32" = "1" || test "$do_inst_nacl" = "1"; then
dpkg --add-architecture i386
fi
apt-get update
# Prevent EULA popup
echo ttf-mscorefonts-installer msttcorefonts/accepted-mscorefonts-eula select true | debconf-set-selections
# We initially run "apt-get" with the --reinstall option and parse its output.
# This way, we can find all the packages that need to be newly installed
# without accidentally promoting any packages from "auto" to "manual".
# We then re-run "apt-get" with just the list of missing packages.
echo "Finding missing packages..."
# Intentionally leaving $packages unquoted so it's more readable.
echo "Packages required: " $packages
echo
new_list_cmd="apt-get install --reinstall $(echo $packages)"
if new_list="$(yes n | LANGUAGE=en LANG=C $new_list_cmd)"; then
# We probably never hit this following line.
echo "No missing packages, and the packages are up to date."
elif [ $? -eq 1 ]; then
# We expect apt-get to have exit status of 1.
# This indicates that we cancelled the install with "yes n|".
new_list=$(echo "$new_list" |
sed -e '1,/The following NEW packages will be installed:/d;s/^ //;t;d')
new_list=$(echo "$new_list" | sed 's/ *$//')
if [ -z "$new_list" ] ; then
echo "No missing packages, and the packages are up to date."
else
echo "Installing missing packages: $new_list."
apt-get install ${do_quietly-} ${new_list}
fi
echo
else
# An apt-get exit status of 100 indicates that a real error has occurred.
# I am intentionally leaving out the '"'s around new_list_cmd,
# as this makes it easier to cut and paste the output
echo "The following command failed: " ${new_list_cmd}
echo
echo "It produces the following output:"
yes n | $new_list_cmd || true
echo
echo "You will have to install the above packages yourself."
echo
exit 100
fi
# Install the Chrome OS default fonts. This must go after running
# apt-get, since install-chromeos-fonts depends on curl.
if test "$do_inst_chromeos_fonts" != "0"; then
echo
echo "Installing Chrome OS fonts."
dir=`echo $0 | sed -r -e 's/\/[^/]+$//'`
if ! $dir/linux/install-chromeos-fonts.py; then
echo "ERROR: The installation of the Chrome OS default fonts failed."
if [ `stat -f -c %T $dir` == "nfs" ]; then
echo "The reason is that your repo is installed on a remote file system."
else
echo "This is expected if your repo is installed on a remote file system."
fi
echo "It is recommended to install your repo on a local file system."
echo "You can skip the installation of the Chrome OS default founts with"
echo "the command line option: --no-chromeos-fonts."
exit 1
fi
else
echo "Skipping installation of Chrome OS fonts."
fi
echo "Installing locales."
CHROMIUM_LOCALES="da_DK.UTF-8 fr_FR.UTF-8 he_IL.UTF-8 zh_TW.UTF-8"
LOCALE_GEN=/etc/locale.gen
if [ -e ${LOCALE_GEN} ]; then
OLD_LOCALE_GEN="$(cat /etc/locale.gen)"
for CHROMIUM_LOCALE in ${CHROMIUM_LOCALES}; do
sed -i "s/^# ${CHROMIUM_LOCALE}/${CHROMIUM_LOCALE}/" ${LOCALE_GEN}
done
# Regenerating locales can take a while, so only do it if we need to.
if (echo "${OLD_LOCALE_GEN}" | cmp -s ${LOCALE_GEN}); then
echo "Locales already up-to-date."
else
locale-gen
fi
else
for CHROMIUM_LOCALE in ${CHROMIUM_LOCALES}; do
locale-gen ${CHROMIUM_LOCALE}
done
fi

Просмотреть файл

@ -43,7 +43,7 @@ solutions = [
def main():
args = parse_args()
if sys.platform in ['win32', 'cygwin']:
if sys.platform == 'win32' and not args.skip_depot_tools_update:
update_depot_tools()
if args.clean and os.path.isdir(SRC_DIR):
@ -56,7 +56,8 @@ def main():
# to 0.
# More information: https://stackoverflow.com/a/9935126
git_cache = args.git_cache or os.getenv('LIBCHROMIUMCONTENT_GIT_CACHE', '')
gclient_sync(chromium_version(), args.clean, git_cache)
if not args.skip_gclient:
gclient_sync(chromium_version(), args.clean, git_cache)
if sys.platform == 'linux2':
install_sysroot()
@ -67,7 +68,7 @@ def main():
if target_arch == 'arm64':
install_aarch64_bintools()
return (apply_patches() or
return (apply_patches(args.skip_patches) or
copy_chromiumcontent_files() or
update_clang() or
run_gn(target_arch, args.defines))
@ -82,6 +83,12 @@ def parse_args():
help='Global git object cache for chromium+ deps')
parser.add_argument('--clean', action='store_true',
help='Cleans the working directory for full rebuild')
parser.add_argument('--skip_patches', action='store_true',
help='Skips applying patches, easier to build locally')
parser.add_argument('--skip_gclient', action='store_true',
help='Skips syncing repo, easier to build locally')
parser.add_argument('--skip_depot_tools_update', action='store_true',
help='Skips update depot tools on windows, easier to build locally')
return parser.parse_args()
@ -155,9 +162,8 @@ def update_depot_tools():
env['TEMP'] = env['TEMP'].rstrip('\\')
env['PATH'] = os.pathsep.join([os.path.join(VENDOR_DIR, 'depot_tools'),
env['PATH']])
cmd_path = env.get('COMSPEC', 'cmd.exe')
update_path = os.path.join(VENDOR_DIR, 'depot_tools', 'update_depot_tools.bat')
subprocess.check_call([cmd_path, '/c', update_path], env=env)
subprocess.check_call([update_path], env=env)
def ensure_gclient_config(git_cache):
@ -170,6 +176,11 @@ def ensure_gclient_config(git_cache):
def gclient_sync(version, force, git_cache):
# Remove untracked files in src.
if os.path.exists(os.path.join(SRC_DIR, '.git')):
with scoped_cwd(SRC_DIR):
subprocess.check_call(['git', 'clean', '-df'])
ensure_gclient_config(git_cache)
env = os.environ.copy()
if sys.platform in ['win32', 'cygwin']:
@ -187,9 +198,11 @@ def gclient_sync(version, force, git_cache):
subprocess.check_call(args, env=env)
def apply_patches():
return subprocess.call([sys.executable,
def apply_patches(skip_patches):
return (subprocess.call([sys.executable,
os.path.join(SOURCE_ROOT, 'script', 'apply-patches')])
if not skip_patches
else True)
def update_clang():
@ -222,6 +235,8 @@ def run_gn(target_arch, defines):
args = 'import("//chromiumcontent/args/{0}.gn") target_cpu="{1}"'.format(component, target_cpu)
if sys.platform in ['win32', 'cygwin']:
args += ' use_experimental_allocator_shim=false'
if sys.platform == 'linux2':
args += ' use_gtk3=false'
output_dir = get_output_dir(SOURCE_ROOT, target_arch, component)
subprocess.call([gn, 'gen', os.path.relpath(output_dir, SRC_DIR), '--args=' + args],
cwd=SRC_DIR, env=env)
@ -263,6 +278,16 @@ def mkdir_p(path):
raise
@contextlib.contextmanager
def scoped_cwd(path):
cwd = os.getcwd()
os.chdir(path)
try:
yield
finally:
os.chdir(cwd)
if __name__ == '__main__':
import sys
sys.exit(main())

2
vendor/depot_tools поставляемый

@ -1 +1 @@
Subproject commit c55eecf76bdb96b904aaaee93fe4c67bbbb102d9
Subproject commit 4b73b02b36238fe6c8e71b647b0e1367c9ead9cc