summaryrefslogtreecommitdiff
path: root/chromium/gin
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@theqtcompany.com>2016-01-25 11:39:07 +0100
committerOswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>2016-01-25 15:20:42 +0000
commit6c91641271e536ffaa88a1dff5127e42ee99a91e (patch)
tree703d9dd49602377ddc90cbf886aad37913f2496b /chromium/gin
parentb145b7fafd36f0c260d6a768c81fc14e32578099 (diff)
downloadqtwebengine-chromium-6c91641271e536ffaa88a1dff5127e42ee99a91e.tar.gz
BASELINE: Update Chromium to 49.0.2623.23
Also adds missing printing sources. Change-Id: I3726b8f0c7d6751c9fc846096c571fadca7108cd Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Diffstat (limited to 'chromium/gin')
-rw-r--r--chromium/gin/BUILD.gn39
-rw-r--r--chromium/gin/arguments.h1
-rw-r--r--chromium/gin/array_buffer.cc1
-rw-r--r--chromium/gin/array_buffer.h5
-rw-r--r--chromium/gin/converter.cc2
-rw-r--r--chromium/gin/converter.h5
-rw-r--r--chromium/gin/converter_unittest.cc7
-rw-r--r--chromium/gin/function_template.h3
-rw-r--r--chromium/gin/gin.gyp20
-rw-r--r--chromium/gin/gin_unittests.isolate56
-rw-r--r--chromium/gin/interceptor.cc2
-rw-r--r--chromium/gin/interceptor.h4
-rw-r--r--chromium/gin/interceptor_unittest.cc3
-rw-r--r--chromium/gin/isolate_holder.cc9
-rw-r--r--chromium/gin/modules/console.cc4
-rw-r--r--chromium/gin/modules/file_module_provider.cc2
-rw-r--r--chromium/gin/modules/file_module_provider.h1
-rw-r--r--chromium/gin/modules/module_registry.cc11
-rw-r--r--chromium/gin/modules/module_registry.h1
-rw-r--r--chromium/gin/modules/module_registry_unittest.cc3
-rw-r--r--chromium/gin/modules/module_runner_delegate.h1
-rw-r--r--chromium/gin/modules/timer.cc15
-rw-r--r--chromium/gin/modules/timer.h1
-rw-r--r--chromium/gin/object_template_builder.cc2
-rw-r--r--chromium/gin/object_template_builder.h9
-rw-r--r--chromium/gin/per_context_data.h2
-rw-r--r--chromium/gin/per_isolate_data.cc4
-rw-r--r--chromium/gin/per_isolate_data.h2
-rw-r--r--chromium/gin/public/context_holder.h2
-rw-r--r--chromium/gin/public/debug.h2
-rw-r--r--chromium/gin/public/isolate_holder.h9
-rw-r--r--chromium/gin/public/v8_idle_task_runner.h1
-rw-r--r--chromium/gin/public/v8_platform.h19
-rw-r--r--chromium/gin/runner.h1
-rw-r--r--chromium/gin/shell/gin_main.cc2
-rw-r--r--chromium/gin/shell/gin_shell_unittest.cc4
-rw-r--r--chromium/gin/shell_runner.h1
-rw-r--r--chromium/gin/shell_runner_unittest.cc1
-rw-r--r--chromium/gin/try_catch.h2
-rw-r--r--chromium/gin/v8_initializer.cc32
-rw-r--r--chromium/gin/v8_initializer.h13
-rw-r--r--chromium/gin/v8_isolate_memory_dump_provider.cc16
-rw-r--r--chromium/gin/v8_isolate_memory_dump_provider.h1
-rw-r--r--chromium/gin/v8_platform.cc38
-rw-r--r--chromium/gin/wrappable.h10
-rw-r--r--chromium/gin/wrappable_unittest.cc1
46 files changed, 318 insertions, 52 deletions
diff --git a/chromium/gin/BUILD.gn b/chromium/gin/BUILD.gn
index 45350747bfe..4531cd1f637 100644
--- a/chromium/gin/BUILD.gn
+++ b/chromium/gin/BUILD.gn
@@ -2,7 +2,7 @@
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
-import("//build/module_args/v8.gni")
+import("//build_overrides/v8.gni")
import("//testing/test.gni")
component("gin") {
@@ -82,21 +82,23 @@ component("gin") {
]
deps = [
"//base/third_party/dynamic_annotations",
+ "//crypto",
]
if (v8_use_external_startup_data && is_win) {
public_deps += [ ":gin_v8_snapshot_fingerprint" ]
- deps += [ "//crypto:crypto" ]
sources += [ "$target_gen_dir/v8_snapshot_fingerprint.cc" ]
defines += [ "V8_VERIFY_EXTERNAL_STARTUP_DATA" ]
}
+
+ configs += [ "//v8:external_startup_data" ]
}
if (v8_use_external_startup_data) {
action("gin_v8_snapshot_fingerprint") {
script = "//gin/fingerprint/fingerprint_v8_snapshot.py"
- snapshot_file = "$root_build_dir/snapshot_blob.bin"
- natives_file = "$root_build_dir/natives_blob.bin"
+ snapshot_file = "$root_out_dir/snapshot_blob.bin"
+ natives_file = "$root_out_dir/natives_blob.bin"
output_file = "$target_gen_dir/v8_snapshot_fingerprint.cc"
args = [
@@ -133,6 +135,8 @@ executable("gin_shell") {
"//build/config/sanitizers:deps",
"//v8",
]
+
+ configs += [ "//v8:external_startup_data" ]
}
source_set("gin_test") {
@@ -157,6 +161,8 @@ source_set("gin_test") {
deps = [
"//v8",
]
+
+ configs += [ "//v8:external_startup_data" ]
}
test("gin_unittests") {
@@ -175,8 +181,33 @@ test("gin_unittests") {
]
deps = [
+ ":gin_shell",
":gin_test",
"//base/test:test_support",
"//v8",
]
+
+ configs += [ "//v8:external_startup_data" ]
+
+ data = [
+ "modules/module_registry_unittests.js",
+ "shell/hello_world.js",
+ "test/expect.js",
+ "test/file_unittests.js",
+ "test/gtest_unittests.js",
+ "../OWNERS",
+ ]
+
+ data_deps = [
+ ":gin_shell",
+ ]
+}
+
+# TODO(GYP): Delete this after we've converted everything to GN.
+# The _run targets exist only for compatibility w/ GYP.
+group("gin_unittests_run") {
+ testonly = true
+ deps = [
+ ":gin_unittests",
+ ]
}
diff --git a/chromium/gin/arguments.h b/chromium/gin/arguments.h
index b8d1296d138..55f9f449e2d 100644
--- a/chromium/gin/arguments.h
+++ b/chromium/gin/arguments.h
@@ -5,7 +5,6 @@
#ifndef GIN_ARGUMENTS_H_
#define GIN_ARGUMENTS_H_
-#include "base/basictypes.h"
#include "gin/converter.h"
#include "gin/gin_export.h"
diff --git a/chromium/gin/array_buffer.cc b/chromium/gin/array_buffer.cc
index 9aad42e389c..d40e8981bd4 100644
--- a/chromium/gin/array_buffer.cc
+++ b/chromium/gin/array_buffer.cc
@@ -2,6 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
+#include <stddef.h>
#include <stdlib.h>
#include "base/logging.h"
diff --git a/chromium/gin/array_buffer.h b/chromium/gin/array_buffer.h
index 4451540e654..2aef366ac81 100644
--- a/chromium/gin/array_buffer.h
+++ b/chromium/gin/array_buffer.h
@@ -5,8 +5,11 @@
#ifndef GIN_ARRAY_BUFFER_H_
#define GIN_ARRAY_BUFFER_H_
-#include "base/basictypes.h"
+#include <stddef.h>
+#include <stdint.h>
+
#include "base/compiler_specific.h"
+#include "base/macros.h"
#include "base/memory/ref_counted.h"
#include "gin/converter.h"
#include "gin/gin_export.h"
diff --git a/chromium/gin/converter.cc b/chromium/gin/converter.cc
index 9a3462d5a2d..42fcd59adb9 100644
--- a/chromium/gin/converter.cc
+++ b/chromium/gin/converter.cc
@@ -4,6 +4,8 @@
#include "gin/converter.h"
+#include <stdint.h>
+
#include "v8/include/v8.h"
using v8::ArrayBuffer;
diff --git a/chromium/gin/converter.h b/chromium/gin/converter.h
index 8d17d41c29f..c15f87dc0b3 100644
--- a/chromium/gin/converter.h
+++ b/chromium/gin/converter.h
@@ -5,6 +5,8 @@
#ifndef GIN_CONVERTER_H_
#define GIN_CONVERTER_H_
+#include <stdint.h>
+
#include <string>
#include <vector>
@@ -20,7 +22,8 @@ bool SetProperty(v8::Isolate* isolate,
v8::Local<v8::Object> object,
KeyType key,
v8::Local<v8::Value> value) {
- auto maybe = object->Set(isolate->GetCurrentContext(), key, value);
+ auto maybe =
+ object->DefineOwnProperty(isolate->GetCurrentContext(), key, value);
return !maybe.IsNothing() && maybe.FromJust();
}
diff --git a/chromium/gin/converter_unittest.cc b/chromium/gin/converter_unittest.cc
index a7c35470320..ec543c253d9 100644
--- a/chromium/gin/converter_unittest.cc
+++ b/chromium/gin/converter_unittest.cc
@@ -5,8 +5,9 @@
#include "gin/converter.h"
#include <limits.h>
+#include <stddef.h>
+#include <stdint.h>
-#include "base/basictypes.h"
#include "base/compiler_specific.h"
#include "base/memory/scoped_ptr.h"
#include "gin/public/isolate_holder.h"
@@ -80,7 +81,7 @@ TEST_F(ConverterTest, Int32) {
struct {
v8::Local<v8::Value> input;
- bool expect_sucess;
+ bool expect_success;
int expected_result;
} test_data_from[] = {
{ Boolean::New(instance_->isolate(), false).As<Value>(), false, 0 },
@@ -102,7 +103,7 @@ TEST_F(ConverterTest, Int32) {
int32_t result = std::numeric_limits<int32_t>::min();
bool success = Converter<int32_t>::FromV8(instance_->isolate(),
test_data_from[i].input, &result);
- EXPECT_EQ(test_data_from[i].expect_sucess, success) << i;
+ EXPECT_EQ(test_data_from[i].expect_success, success) << i;
if (success)
EXPECT_EQ(test_data_from[i].expected_result, result) << i;
}
diff --git a/chromium/gin/function_template.h b/chromium/gin/function_template.h
index 15ea8fef016..c0228cb5f83 100644
--- a/chromium/gin/function_template.h
+++ b/chromium/gin/function_template.h
@@ -5,8 +5,11 @@
#ifndef GIN_FUNCTION_TEMPLATE_H_
#define GIN_FUNCTION_TEMPLATE_H_
+#include <stddef.h>
+
#include "base/callback.h"
#include "base/logging.h"
+#include "base/macros.h"
#include "gin/arguments.h"
#include "gin/converter.h"
#include "gin/gin_export.h"
diff --git a/chromium/gin/gin.gyp b/chromium/gin/gin.gyp
index a3e4d39c1c8..1b5a544b018 100644
--- a/chromium/gin/gin.gyp
+++ b/chromium/gin/gin.gyp
@@ -156,6 +156,7 @@
'dependencies': [
'../base/base.gyp:test_support_base',
'../v8/tools/gyp/v8.gyp:v8',
+ 'gin_shell',
'gin_test',
],
'sources': [
@@ -173,4 +174,23 @@
],
},
],
+ 'conditions': [
+ ['test_isolation_mode != "noop"', {
+ 'targets': [
+ {
+ 'target_name': 'gin_unittests_run',
+ 'type': 'none',
+ 'dependencies': [
+ 'gin_unittests',
+ ],
+ 'includes': [
+ '../build/isolate.gypi',
+ ],
+ 'sources': [
+ 'gin_unittests.isolate',
+ ],
+ },
+ ],
+ }],
+ ],
}
diff --git a/chromium/gin/gin_unittests.isolate b/chromium/gin/gin_unittests.isolate
new file mode 100644
index 00000000000..7313e25d73a
--- /dev/null
+++ b/chromium/gin/gin_unittests.isolate
@@ -0,0 +1,56 @@
+# Copyright 2015 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.
+
+{
+ 'variables': {
+ 'files': [
+ '<(PRODUCT_DIR)/gin_shell<(EXECUTABLE_SUFFIX)',
+ '<(PRODUCT_DIR)/gin_unittests<(EXECUTABLE_SUFFIX)',
+ 'modules/module_registry_unittests.js',
+ 'shell/hello_world.js',
+ 'test/expect.js',
+ 'test/file_unittests.js',
+ 'test/gtest_unittests.js',
+ '../OWNERS',
+ ],
+ },
+ 'conditions': [
+ ['OS=="linux" or OS=="mac" or OS=="win"', {
+ 'variables': {
+ 'files': [
+ '../testing/test_env.py',
+ ],
+ 'command': [
+ '../testing/test_env.py',
+ '<(PRODUCT_DIR)/gin_unittests<(EXECUTABLE_SUFFIX)',
+ '--brave-new-test-launcher',
+ '--test-launcher-bot-mode',
+ '--asan=<(asan)',
+ '--msan=<(msan)',
+ '--tsan=<(tsan)',
+ ],
+ },
+ }],
+ ['OS=="mac" and asan==1 and fastbuild==0', {
+ 'variables': {
+ 'files': [
+ '<(PRODUCT_DIR)/gin_shell.dSYM/',
+ '<(PRODUCT_DIR)/gin_unittests.dSYM/',
+ ],
+ },
+ }],
+ ['OS=="win" and (fastbuild==0 or fastbuild==1)', {
+ 'variables': {
+ 'files': [
+ '<(PRODUCT_DIR)/gin_shell.exe.pdb',
+ '<(PRODUCT_DIR)/gin_unittests.exe.pdb',
+ ],
+ },
+ }],
+ ],
+ 'includes': [
+ '../base/base.isolate',
+ '../gin/v8.isolate',
+ ],
+}
diff --git a/chromium/gin/interceptor.cc b/chromium/gin/interceptor.cc
index 617fd08e26d..6b7b8127ac6 100644
--- a/chromium/gin/interceptor.cc
+++ b/chromium/gin/interceptor.cc
@@ -4,6 +4,8 @@
#include "gin/interceptor.h"
+#include <stdint.h>
+
#include <map>
#include "gin/per_isolate_data.h"
diff --git a/chromium/gin/interceptor.h b/chromium/gin/interceptor.h
index 43cb3464fe9..bd265fb094d 100644
--- a/chromium/gin/interceptor.h
+++ b/chromium/gin/interceptor.h
@@ -5,10 +5,12 @@
#ifndef GIN_INTERCEPTOR_H_
#define GIN_INTERCEPTOR_H_
+#include <stdint.h>
+
#include <string>
#include <vector>
-#include "base/basictypes.h"
+#include "base/macros.h"
#include "gin/gin_export.h"
#include "v8/include/v8.h"
diff --git a/chromium/gin/interceptor_unittest.cc b/chromium/gin/interceptor_unittest.cc
index 02fb10d235a..59e75cf04d7 100644
--- a/chromium/gin/interceptor_unittest.cc
+++ b/chromium/gin/interceptor_unittest.cc
@@ -2,7 +2,10 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
+#include <stdint.h>
+
#include "base/logging.h"
+#include "base/macros.h"
#include "gin/arguments.h"
#include "gin/handle.h"
#include "gin/interceptor.h"
diff --git a/chromium/gin/isolate_holder.cc b/chromium/gin/isolate_holder.cc
index 3defd7ce9b5..c05cd1e42db 100644
--- a/chromium/gin/isolate_holder.cc
+++ b/chromium/gin/isolate_holder.cc
@@ -4,8 +4,10 @@
#include "gin/public/isolate_holder.h"
+#include <stddef.h>
#include <stdlib.h>
#include <string.h>
+#include <utility>
#include "base/logging.h"
#include "base/message_loop/message_loop.h"
@@ -74,15 +76,16 @@ IsolateHolder::~IsolateHolder() {
// static
void IsolateHolder::Initialize(ScriptMode mode,
+ V8ExtrasMode v8_extras_mode,
v8::ArrayBuffer::Allocator* allocator) {
CHECK(allocator);
- V8Initializer::Initialize(mode);
+ V8Initializer::Initialize(mode, v8_extras_mode);
g_array_buffer_allocator = allocator;
}
void IsolateHolder::AddRunMicrotasksObserver() {
DCHECK(!task_observer_.get());
- task_observer_.reset(new RunMicrotasksObserver(isolate_));;
+ task_observer_.reset(new RunMicrotasksObserver(isolate_));
base::MessageLoop::current()->AddTaskObserver(task_observer_.get());
}
@@ -95,7 +98,7 @@ void IsolateHolder::RemoveRunMicrotasksObserver() {
void IsolateHolder::EnableIdleTasks(
scoped_ptr<V8IdleTaskRunner> idle_task_runner) {
DCHECK(isolate_data_.get());
- isolate_data_->EnableIdleTasks(idle_task_runner.Pass());
+ isolate_data_->EnableIdleTasks(std::move(idle_task_runner));
}
} // namespace gin
diff --git a/chromium/gin/modules/console.cc b/chromium/gin/modules/console.cc
index 231d8fc4761..63fc41eeaf0 100644
--- a/chromium/gin/modules/console.cc
+++ b/chromium/gin/modules/console.cc
@@ -4,7 +4,7 @@
#include "gin/modules/console.h"
-#include <iostream>
+#include <stdio.h>
#include "base/strings/string_util.h"
#include "gin/arguments.h"
@@ -25,7 +25,7 @@ void Log(Arguments* args) {
args->ThrowError();
return;
}
- std::cout << base::JoinString(messages, " ") << std::endl;
+ printf("%s\n", base::JoinString(messages, " ").c_str());
}
WrapperInfo g_wrapper_info = { kEmbedderNativeGin };
diff --git a/chromium/gin/modules/file_module_provider.cc b/chromium/gin/modules/file_module_provider.cc
index 1568378ee60..a25686dfd5e 100644
--- a/chromium/gin/modules/file_module_provider.cc
+++ b/chromium/gin/modules/file_module_provider.cc
@@ -4,6 +4,8 @@
#include "gin/modules/file_module_provider.h"
+#include <stddef.h>
+
#include "base/bind.h"
#include "base/files/file_util.h"
#include "base/message_loop/message_loop.h"
diff --git a/chromium/gin/modules/file_module_provider.h b/chromium/gin/modules/file_module_provider.h
index dd75a0feaf1..7c038879684 100644
--- a/chromium/gin/modules/file_module_provider.h
+++ b/chromium/gin/modules/file_module_provider.h
@@ -10,6 +10,7 @@
#include <vector>
#include "base/files/file_path.h"
+#include "base/macros.h"
#include "gin/gin_export.h"
#include "gin/runner.h"
diff --git a/chromium/gin/modules/module_registry.cc b/chromium/gin/modules/module_registry.cc
index b75894cf4cb..deec1874b48 100644
--- a/chromium/gin/modules/module_registry.cc
+++ b/chromium/gin/modules/module_registry.cc
@@ -4,7 +4,10 @@
#include "gin/modules/module_registry.h"
+#include <stddef.h>
+#include <stdint.h>
#include <string>
+#include <utility>
#include <vector>
#include "base/logging.h"
@@ -80,7 +83,7 @@ void Define(const v8::FunctionCallbackInfo<Value>& info) {
ModuleRegistry* registry =
ModuleRegistry::From(args.isolate()->GetCurrentContext());
- registry->AddPendingModule(args.isolate(), pending.Pass());
+ registry->AddPendingModule(args.isolate(), std::move(pending));
}
WrapperInfo g_wrapper_info = { kEmbedderNativeGin };
@@ -158,7 +161,7 @@ void ModuleRegistry::AddPendingModule(Isolate* isolate,
scoped_ptr<PendingModule> pending) {
const std::string pending_id = pending->id;
const std::vector<std::string> pending_dependencies = pending->dependencies;
- AttemptToLoad(isolate, pending.Pass());
+ AttemptToLoad(isolate, std::move(pending));
FOR_EACH_OBSERVER(ModuleRegistryObserver, observer_list_,
OnDidAddPendingModule(pending_id, pending_dependencies));
}
@@ -255,7 +258,7 @@ bool ModuleRegistry::AttemptToLoad(Isolate* isolate,
pending_modules_.push_back(pending.release());
return false;
}
- return Load(isolate, pending.Pass());
+ return Load(isolate, std::move(pending));
}
v8::Local<v8::Value> ModuleRegistry::GetModule(v8::Isolate* isolate,
@@ -275,7 +278,7 @@ void ModuleRegistry::AttemptToLoadMoreModules(Isolate* isolate) {
for (size_t i = 0; i < pending_modules.size(); ++i) {
scoped_ptr<PendingModule> pending(pending_modules[i]);
pending_modules[i] = NULL;
- if (AttemptToLoad(isolate, pending.Pass()))
+ if (AttemptToLoad(isolate, std::move(pending)))
keep_trying = true;
}
}
diff --git a/chromium/gin/modules/module_registry.h b/chromium/gin/modules/module_registry.h
index a2e0d0bb527..0f67137abb3 100644
--- a/chromium/gin/modules/module_registry.h
+++ b/chromium/gin/modules/module_registry.h
@@ -12,6 +12,7 @@
#include "base/callback.h"
#include "base/compiler_specific.h"
+#include "base/macros.h"
#include "base/memory/scoped_ptr.h"
#include "base/memory/scoped_vector.h"
#include "base/observer_list.h"
diff --git a/chromium/gin/modules/module_registry_unittest.cc b/chromium/gin/modules/module_registry_unittest.cc
index 00c6a94e193..e337c2d9b4b 100644
--- a/chromium/gin/modules/module_registry_unittest.cc
+++ b/chromium/gin/modules/module_registry_unittest.cc
@@ -4,7 +4,10 @@
#include "gin/modules/module_registry.h"
+#include <stdint.h>
+
#include "base/bind.h"
+#include "base/macros.h"
#include "gin/modules/module_registry_observer.h"
#include "gin/modules/module_runner_delegate.h"
#include "gin/public/context_holder.h"
diff --git a/chromium/gin/modules/module_runner_delegate.h b/chromium/gin/modules/module_runner_delegate.h
index 002db1c7425..f49594c5318 100644
--- a/chromium/gin/modules/module_runner_delegate.h
+++ b/chromium/gin/modules/module_runner_delegate.h
@@ -9,6 +9,7 @@
#include "base/callback.h"
#include "base/compiler_specific.h"
+#include "base/macros.h"
#include "gin/gin_export.h"
#include "gin/modules/file_module_provider.h"
#include "gin/shell_runner.h"
diff --git a/chromium/gin/modules/timer.cc b/chromium/gin/modules/timer.cc
index 8aac8a64925..26b5c75e4da 100644
--- a/chromium/gin/modules/timer.cc
+++ b/chromium/gin/modules/timer.cc
@@ -12,8 +12,8 @@ namespace gin {
namespace {
-v8::Local<v8::String> GetHiddenPropertyName(v8::Isolate* isolate) {
- return gin::StringToSymbol(isolate, "::gin::Timer");
+v8::Local<v8::Private> GetHiddenPropertyName(v8::Isolate* isolate) {
+ return v8::Private::ForApi(isolate, gin::StringToV8(isolate, "::gin::Timer"));
}
} // namespace
@@ -45,8 +45,10 @@ Timer::Timer(v8::Isolate* isolate, bool repeating, int delay_ms,
runner_(PerContextData::From(
isolate->GetCurrentContext())->runner()->GetWeakPtr()),
weak_factory_(this) {
- GetWrapper(runner_->GetContextHolder()->isolate())->SetHiddenValue(
- GetHiddenPropertyName(isolate), function);
+ GetWrapper(runner_->GetContextHolder()->isolate())
+ ->SetPrivate(isolate->GetCurrentContext(), GetHiddenPropertyName(isolate),
+ function)
+ .FromJust();
timer_.Start(FROM_HERE, base::TimeDelta::FromMilliseconds(delay_ms),
base::Bind(&Timer::OnTimerFired, weak_factory_.GetWeakPtr()));
}
@@ -65,7 +67,10 @@ void Timer::OnTimerFired() {
Runner::Scope scope(runner_.get());
v8::Isolate* isolate = runner_->GetContextHolder()->isolate();
v8::Local<v8::Function> function = v8::Local<v8::Function>::Cast(
- GetWrapper(isolate)->GetHiddenValue(GetHiddenPropertyName(isolate)));
+ GetWrapper(isolate)
+ ->GetPrivate(runner_->GetContextHolder()->context(),
+ GetHiddenPropertyName(isolate))
+ .ToLocalChecked());
runner_->Call(function, v8::Undefined(isolate), 0, NULL);
}
diff --git a/chromium/gin/modules/timer.h b/chromium/gin/modules/timer.h
index c4f809168eb..1b7f6139eda 100644
--- a/chromium/gin/modules/timer.h
+++ b/chromium/gin/modules/timer.h
@@ -5,6 +5,7 @@
#ifndef GIN_MODULES_TIMER_H_
#define GIN_MODULES_TIMER_H_
+#include "base/macros.h"
#include "base/memory/weak_ptr.h"
#include "base/timer/timer.h"
#include "gin/gin_export.h"
diff --git a/chromium/gin/object_template_builder.cc b/chromium/gin/object_template_builder.cc
index 28c9791b05f..158131f206c 100644
--- a/chromium/gin/object_template_builder.cc
+++ b/chromium/gin/object_template_builder.cc
@@ -4,6 +4,8 @@
#include "gin/object_template_builder.h"
+#include <stdint.h>
+
#include "gin/interceptor.h"
#include "gin/per_isolate_data.h"
#include "gin/public/wrapper_info.h"
diff --git a/chromium/gin/object_template_builder.h b/chromium/gin/object_template_builder.h
index 1e53d83a151..3cfd4a394b9 100644
--- a/chromium/gin/object_template_builder.h
+++ b/chromium/gin/object_template_builder.h
@@ -5,6 +5,8 @@
#ifndef GIN_OBJECT_TEMPLATE_BUILDER_H_
#define GIN_OBJECT_TEMPLATE_BUILDER_H_
+#include <type_traits>
+
#include "base/bind.h"
#include "base/callback.h"
#include "base/strings/string_piece.h"
@@ -52,9 +54,10 @@ struct CallbackTraits<base::Callback<T> > {
// specially because the first parameter for callbacks to MFP should typically
// come from the the JavaScript "this" object the function was called on, not
// from the first normal parameter.
-template<typename T>
-struct CallbackTraits<T, typename base::enable_if<
- base::is_member_function_pointer<T>::value>::type> {
+template <typename T>
+struct CallbackTraits<
+ T,
+ typename std::enable_if<base::is_member_function_pointer<T>::value>::type> {
static v8::Local<v8::FunctionTemplate> CreateTemplate(v8::Isolate* isolate,
T callback) {
return CreateFunctionTemplate(isolate, base::Bind(callback),
diff --git a/chromium/gin/per_context_data.h b/chromium/gin/per_context_data.h
index 976ef51bd3a..39314293c17 100644
--- a/chromium/gin/per_context_data.h
+++ b/chromium/gin/per_context_data.h
@@ -5,7 +5,7 @@
#ifndef GIN_PER_CONTEXT_DATA_H_
#define GIN_PER_CONTEXT_DATA_H_
-#include "base/basictypes.h"
+#include "base/macros.h"
#include "base/supports_user_data.h"
#include "gin/gin_export.h"
#include "v8/include/v8.h"
diff --git a/chromium/gin/per_isolate_data.cc b/chromium/gin/per_isolate_data.cc
index cec082174bf..a6101582fa3 100644
--- a/chromium/gin/per_isolate_data.cc
+++ b/chromium/gin/per_isolate_data.cc
@@ -4,6 +4,8 @@
#include "gin/per_isolate_data.h"
+#include <utility>
+
#include "base/logging.h"
#include "base/single_thread_task_runner.h"
#include "base/thread_task_runner_handle.h"
@@ -113,7 +115,7 @@ NamedPropertyInterceptor* PerIsolateData::GetNamedPropertyInterceptor(
void PerIsolateData::EnableIdleTasks(
scoped_ptr<V8IdleTaskRunner> idle_task_runner) {
- idle_task_runner_ = idle_task_runner.Pass();
+ idle_task_runner_ = std::move(idle_task_runner);
}
} // namespace gin
diff --git a/chromium/gin/per_isolate_data.h b/chromium/gin/per_isolate_data.h
index ef44f313a27..a1ef4747aa9 100644
--- a/chromium/gin/per_isolate_data.h
+++ b/chromium/gin/per_isolate_data.h
@@ -7,7 +7,7 @@
#include <map>
-#include "base/basictypes.h"
+#include "base/macros.h"
#include "base/memory/ref_counted.h"
#include "base/memory/scoped_ptr.h"
#include "gin/gin_export.h"
diff --git a/chromium/gin/public/context_holder.h b/chromium/gin/public/context_holder.h
index 835bffa2d3c..176af1754fe 100644
--- a/chromium/gin/public/context_holder.h
+++ b/chromium/gin/public/context_holder.h
@@ -7,7 +7,7 @@
#include <list>
-#include "base/basictypes.h"
+#include "base/macros.h"
#include "base/memory/scoped_ptr.h"
#include "gin/gin_export.h"
#include "v8/include/v8.h"
diff --git a/chromium/gin/public/debug.h b/chromium/gin/public/debug.h
index 0c24109f400..14e30170985 100644
--- a/chromium/gin/public/debug.h
+++ b/chromium/gin/public/debug.h
@@ -5,6 +5,8 @@
#ifndef GIN_PUBLIC_DEBUG_H_
#define GIN_PUBLIC_DEBUG_H_
+#include <stddef.h>
+
#include "build/build_config.h"
#include "gin/gin_export.h"
#include "v8/include/v8.h"
diff --git a/chromium/gin/public/isolate_holder.h b/chromium/gin/public/isolate_holder.h
index f7e01e8aee8..cb51c2f0844 100644
--- a/chromium/gin/public/isolate_holder.h
+++ b/chromium/gin/public/isolate_holder.h
@@ -5,7 +5,7 @@
#ifndef GIN_PUBLIC_ISOLATE_HOLDER_H_
#define GIN_PUBLIC_ISOLATE_HOLDER_H_
-#include "base/basictypes.h"
+#include "base/macros.h"
#include "base/memory/scoped_ptr.h"
#include "gin/gin_export.h"
#include "gin/public/v8_idle_task_runner.h"
@@ -35,6 +35,12 @@ class GIN_EXPORT IsolateHolder {
kUseLocker
};
+ // Indicates whether V8 works with stable or experimental v8 extras.
+ enum V8ExtrasMode {
+ kStableV8Extras,
+ kStableAndExperimentalV8Extras,
+ };
+
IsolateHolder();
explicit IsolateHolder(AccessMode access_mode);
~IsolateHolder();
@@ -48,6 +54,7 @@ class GIN_EXPORT IsolateHolder {
// V8Initializer::LoadV8SnapshotFromFD or
// V8Initializer::LoadV8Snapshot) before calling this method.
static void Initialize(ScriptMode mode,
+ V8ExtrasMode v8_extras_mode,
v8::ArrayBuffer::Allocator* allocator);
v8::Isolate* isolate() { return isolate_; }
diff --git a/chromium/gin/public/v8_idle_task_runner.h b/chromium/gin/public/v8_idle_task_runner.h
index f0662d19639..a294166f9bc 100644
--- a/chromium/gin/public/v8_idle_task_runner.h
+++ b/chromium/gin/public/v8_idle_task_runner.h
@@ -5,7 +5,6 @@
#ifndef GIN_PUBLIC_V8_IDLE_TASK_RUNNER_H_
#define GIN_PUBLIC_V8_IDLE_TASK_RUNNER_H_
-#include "base/basictypes.h"
#include "v8/include/v8-platform.h"
namespace gin {
diff --git a/chromium/gin/public/v8_platform.h b/chromium/gin/public/v8_platform.h
index d66c1fba38d..31e812e05b7 100644
--- a/chromium/gin/public/v8_platform.h
+++ b/chromium/gin/public/v8_platform.h
@@ -5,9 +5,10 @@
#ifndef GIN_PUBLIC_V8_PLATFORM_H_
#define GIN_PUBLIC_V8_PLATFORM_H_
-#include "base/basictypes.h"
#include "base/compiler_specific.h"
#include "base/lazy_instance.h"
+#include "base/macros.h"
+#include "base/trace_event/trace_event.h"
#include "gin/gin_export.h"
#include "v8/include/v8-platform.h"
@@ -30,6 +31,22 @@ class GIN_EXPORT V8Platform : public NON_EXPORTED_BASE(v8::Platform) {
v8::IdleTask* task) override;
bool IdleTasksEnabled(v8::Isolate* isolate) override;
double MonotonicallyIncreasingTime() override;
+ const uint8_t* GetCategoryGroupEnabled(const char* name) override;
+ const char* GetCategoryGroupName(
+ const uint8_t* category_enabled_flag) override;
+ uint64_t AddTraceEvent(char phase,
+ const uint8_t* category_enabled_flag,
+ const char* name,
+ uint64_t id,
+ uint64_t bind_id,
+ int32_t num_args,
+ const char** arg_names,
+ const uint8_t* arg_types,
+ const uint64_t* arg_values,
+ unsigned int flags) override;
+ void UpdateTraceEventDuration(const uint8_t* category_enabled_flag,
+ const char* name,
+ uint64_t handle) override;
private:
friend struct base::DefaultLazyInstanceTraits<V8Platform>;
diff --git a/chromium/gin/runner.h b/chromium/gin/runner.h
index 31995698ffd..a898b035e55 100644
--- a/chromium/gin/runner.h
+++ b/chromium/gin/runner.h
@@ -7,6 +7,7 @@
#include <string>
+#include "base/macros.h"
#include "base/memory/weak_ptr.h"
#include "gin/gin_export.h"
#include "gin/public/context_holder.h"
diff --git a/chromium/gin/shell/gin_main.cc b/chromium/gin/shell/gin_main.cc
index 0b461eed2cc..1fff9f5e5a0 100644
--- a/chromium/gin/shell/gin_main.cc
+++ b/chromium/gin/shell/gin_main.cc
@@ -7,6 +7,7 @@
#include "base/command_line.h"
#include "base/files/file_util.h"
#include "base/i18n/icu_util.h"
+#include "base/macros.h"
#include "base/message_loop/message_loop.h"
#include "gin/array_buffer.h"
#include "gin/modules/console.h"
@@ -68,6 +69,7 @@ int main(int argc, char** argv) {
base::MessageLoop message_loop;
gin::IsolateHolder::Initialize(gin::IsolateHolder::kStrictMode,
+ gin::IsolateHolder::kStableV8Extras,
gin::ArrayBufferAllocator::SharedInstance());
gin::IsolateHolder instance;
diff --git a/chromium/gin/shell/gin_shell_unittest.cc b/chromium/gin/shell/gin_shell_unittest.cc
index 2be25192401..ce90535106d 100644
--- a/chromium/gin/shell/gin_shell_unittest.cc
+++ b/chromium/gin/shell/gin_shell_unittest.cc
@@ -12,7 +12,11 @@
base::FilePath GinShellPath() {
base::FilePath dir;
PathService::Get(base::DIR_EXE, &dir);
+#if defined(OS_WIN)
+ return dir.AppendASCII("gin_shell.exe");
+#else
return dir.AppendASCII("gin_shell");
+#endif
}
base::FilePath HelloWorldPath() {
diff --git a/chromium/gin/shell_runner.h b/chromium/gin/shell_runner.h
index e150feacda3..2d1cc4902b5 100644
--- a/chromium/gin/shell_runner.h
+++ b/chromium/gin/shell_runner.h
@@ -5,6 +5,7 @@
#ifndef GIN_SHELL_RUNNER_H_
#define GIN_SHELL_RUNNER_H_
+#include "base/macros.h"
#include "gin/runner.h"
namespace gin {
diff --git a/chromium/gin/shell_runner_unittest.cc b/chromium/gin/shell_runner_unittest.cc
index 4c8b0f6d98f..abd4f3cb755 100644
--- a/chromium/gin/shell_runner_unittest.cc
+++ b/chromium/gin/shell_runner_unittest.cc
@@ -33,6 +33,7 @@ TEST(RunnerTest, Run) {
#endif
gin::IsolateHolder::Initialize(gin::IsolateHolder::kStrictMode,
+ gin::IsolateHolder::kStableV8Extras,
gin::ArrayBufferAllocator::SharedInstance());
gin::IsolateHolder instance;
diff --git a/chromium/gin/try_catch.h b/chromium/gin/try_catch.h
index 84b2ae16465..a1daaf1c4f0 100644
--- a/chromium/gin/try_catch.h
+++ b/chromium/gin/try_catch.h
@@ -7,7 +7,7 @@
#include <string>
-#include "base/basictypes.h"
+#include "base/macros.h"
#include "gin/gin_export.h"
#include "v8/include/v8.h"
diff --git a/chromium/gin/v8_initializer.cc b/chromium/gin/v8_initializer.cc
index 810225c9c86..cfb3630ebcf 100644
--- a/chromium/gin/v8_initializer.cc
+++ b/chromium/gin/v8_initializer.cc
@@ -4,7 +4,9 @@
#include "gin/v8_initializer.h"
-#include "base/basictypes.h"
+#include <stddef.h>
+#include <stdint.h>
+
#include "base/debug/alias.h"
#include "base/files/file.h"
#include "base/files/file_path.h"
@@ -53,8 +55,19 @@ base::PlatformFile g_snapshot_pf = kInvalidPlatformFile;
base::MemoryMappedFile::Region g_natives_region;
base::MemoryMappedFile::Region g_snapshot_region;
+#if defined(OS_ANDROID)
+#ifdef __LP64__
+const char kNativesFileName[] = "natives_blob_64.bin";
+const char kSnapshotFileName[] = "snapshot_blob_64.bin";
+#else
+const char kNativesFileName[] = "natives_blob_32.bin";
+const char kSnapshotFileName[] = "snapshot_blob_32.bin";
+#endif // __LP64__
+
+#else // defined(OS_ANDROID)
const char kNativesFileName[] = "natives_blob.bin";
const char kSnapshotFileName[] = "snapshot_blob.bin";
+#endif // defined(OS_ANDROID)
void GetV8FilePath(const char* file_name, base::FilePath* path_out) {
#if !defined(OS_MACOSX)
@@ -275,8 +288,8 @@ void V8Initializer::LoadV8Natives() {
// static
void V8Initializer::LoadV8SnapshotFromFD(base::PlatformFile snapshot_pf,
- int64 snapshot_offset,
- int64 snapshot_size) {
+ int64_t snapshot_offset,
+ int64_t snapshot_size) {
if (g_mapped_snapshot)
return;
@@ -307,8 +320,8 @@ void V8Initializer::LoadV8SnapshotFromFD(base::PlatformFile snapshot_pf,
// static
void V8Initializer::LoadV8NativesFromFD(base::PlatformFile natives_pf,
- int64 natives_offset,
- int64 natives_size) {
+ int64_t natives_offset,
+ int64_t natives_size) {
if (g_mapped_natives)
return;
@@ -351,17 +364,22 @@ base::PlatformFile V8Initializer::GetOpenSnapshotFileForChildProcesses(
#endif // defined(V8_USE_EXTERNAL_STARTUP_DATA)
// static
-void V8Initializer::Initialize(gin::IsolateHolder::ScriptMode mode) {
+void V8Initializer::Initialize(IsolateHolder::ScriptMode mode,
+ IsolateHolder::V8ExtrasMode v8_extras_mode) {
static bool v8_is_initialized = false;
if (v8_is_initialized)
return;
v8::V8::InitializePlatform(V8Platform::Get());
- if (gin::IsolateHolder::kStrictMode == mode) {
+ if (IsolateHolder::kStrictMode == mode) {
static const char use_strict[] = "--use_strict";
v8::V8::SetFlagsFromString(use_strict, sizeof(use_strict) - 1);
}
+ if (IsolateHolder::kStableAndExperimentalV8Extras == v8_extras_mode) {
+ static const char flag[] = "--experimental_extras";
+ v8::V8::SetFlagsFromString(flag, sizeof(flag) - 1);
+ }
#if defined(V8_USE_EXTERNAL_STARTUP_DATA)
v8::StartupData natives;
diff --git a/chromium/gin/v8_initializer.h b/chromium/gin/v8_initializer.h
index e1814369225..dcb5329d074 100644
--- a/chromium/gin/v8_initializer.h
+++ b/chromium/gin/v8_initializer.h
@@ -5,6 +5,8 @@
#ifndef GIN_V8_INITIALIZER_H_
#define GIN_V8_INITIALIZER_H_
+#include <stdint.h>
+
#include "base/files/file.h"
#include "base/files/memory_mapped_file.h"
#include "gin/array_buffer.h"
@@ -18,7 +20,8 @@ namespace gin {
class GIN_EXPORT V8Initializer {
public:
// This should be called by IsolateHolder::Initialize().
- static void Initialize(gin::IsolateHolder::ScriptMode mode);
+ static void Initialize(IsolateHolder::ScriptMode mode,
+ IsolateHolder::V8ExtrasMode v8_extras_mode);
// Get address and size information for currently loaded snapshot.
// If no snapshot is loaded, the return values are null for addresses
@@ -35,14 +38,14 @@ class GIN_EXPORT V8Initializer {
// of the files to be loaded. Since the VM can boot with or without
// the snapshot, this function does not return a status.
static void LoadV8SnapshotFromFD(base::PlatformFile snapshot_fd,
- int64 snapshot_offset,
- int64 snapshot_size);
+ int64_t snapshot_offset,
+ int64_t snapshot_size);
// Similar to LoadV8SnapshotFromFD, but for the source of the natives.
// Without the natives we cannot continue, so this function contains
// release mode asserts and won't return if it fails.
static void LoadV8NativesFromFD(base::PlatformFile natives_fd,
- int64 natives_offset,
- int64 natives_size);
+ int64_t natives_offset,
+ int64_t natives_size);
// Load V8 snapshot from default resources, if they are available.
static void LoadV8Snapshot();
diff --git a/chromium/gin/v8_isolate_memory_dump_provider.cc b/chromium/gin/v8_isolate_memory_dump_provider.cc
index ecbf5fffabf..ec2e33be0a6 100644
--- a/chromium/gin/v8_isolate_memory_dump_provider.cc
+++ b/chromium/gin/v8_isolate_memory_dump_provider.cc
@@ -4,6 +4,8 @@
#include "gin/v8_isolate_memory_dump_provider.h"
+#include <stddef.h>
+
#include "base/strings/stringprintf.h"
#include "base/thread_task_runner_handle.h"
#include "base/trace_event/memory_dump_manager.h"
@@ -17,7 +19,7 @@ V8IsolateMemoryDumpProvider::V8IsolateMemoryDumpProvider(
IsolateHolder* isolate_holder)
: isolate_holder_(isolate_holder) {
base::trace_event::MemoryDumpManager::GetInstance()->RegisterDumpProvider(
- this, base::ThreadTaskRunnerHandle::Get());
+ this, "V8Isolate", base::ThreadTaskRunnerHandle::Get());
}
V8IsolateMemoryDumpProvider::~V8IsolateMemoryDumpProvider() {
@@ -103,6 +105,18 @@ void V8IsolateMemoryDumpProvider::DumpHeapStatistics(
base::trace_event::MemoryAllocatorDump::kUnitsBytes,
heap_statistics.total_heap_size() - known_spaces_size);
+ // If V8 zaps garbage, all the memory mapped regions become resident,
+ // so we add an extra dump to avoid mismatches w.r.t. the total
+ // resident values.
+ if (heap_statistics.does_zap_garbage()) {
+ auto zap_dump = process_memory_dump->CreateAllocatorDump(
+ dump_base_name + "/zapped_for_debug");
+ zap_dump->AddScalar(base::trace_event::MemoryAllocatorDump::kNameSize,
+ base::trace_event::MemoryAllocatorDump::kUnitsBytes,
+ heap_statistics.total_heap_size() -
+ heap_statistics.total_physical_size());
+ }
+
// If light dump is requested, then object statistics are not dumped
if (args.level_of_detail == base::trace_event::MemoryDumpLevelOfDetail::LIGHT)
return;
diff --git a/chromium/gin/v8_isolate_memory_dump_provider.h b/chromium/gin/v8_isolate_memory_dump_provider.h
index 2a2c5dbcdb0..d70b790e0e0 100644
--- a/chromium/gin/v8_isolate_memory_dump_provider.h
+++ b/chromium/gin/v8_isolate_memory_dump_provider.h
@@ -7,6 +7,7 @@
#include <string>
+#include "base/macros.h"
#include "base/trace_event/memory_dump_provider.h"
#include "gin/gin_export.h"
diff --git a/chromium/gin/v8_platform.cc b/chromium/gin/v8_platform.cc
index bd32977d651..75129ef7101 100644
--- a/chromium/gin/v8_platform.cc
+++ b/chromium/gin/v8_platform.cc
@@ -61,4 +61,42 @@ double V8Platform::MonotonicallyIncreasingTime() {
static_cast<double>(base::Time::kMicrosecondsPerSecond);
}
+const uint8_t* V8Platform::GetCategoryGroupEnabled(const char* name) {
+ return TRACE_EVENT_API_GET_CATEGORY_GROUP_ENABLED(name);
+}
+
+const char* V8Platform::GetCategoryGroupName(
+ const uint8_t* category_enabled_flag) {
+ return base::trace_event::TraceLog::GetCategoryGroupName(
+ category_enabled_flag);
+}
+
+uint64_t V8Platform::AddTraceEvent(char phase,
+ const uint8_t* category_enabled_flag,
+ const char* name,
+ uint64_t id,
+ uint64_t bind_id,
+ int32_t num_args,
+ const char** arg_names,
+ const uint8_t* arg_types,
+ const uint64_t* arg_values,
+ unsigned int flags) {
+ base::trace_event::TraceEventHandle handle =
+ TRACE_EVENT_API_ADD_TRACE_EVENT_WITH_BIND_ID(
+ phase, category_enabled_flag, name, id, bind_id, num_args, arg_names,
+ arg_types, (const long long unsigned int*)arg_values, NULL, flags);
+ uint64_t result;
+ memcpy(&result, &handle, sizeof(result));
+ return result;
+}
+
+void V8Platform::UpdateTraceEventDuration(const uint8_t* category_enabled_flag,
+ const char* name,
+ uint64_t handle) {
+ base::trace_event::TraceEventHandle traceEventHandle;
+ memcpy(&traceEventHandle, &handle, sizeof(handle));
+ TRACE_EVENT_API_UPDATE_TRACE_EVENT_DURATION(category_enabled_flag, name,
+ traceEventHandle);
+}
+
} // namespace gin
diff --git a/chromium/gin/wrappable.h b/chromium/gin/wrappable.h
index f7d82b0d5a7..f253fd9566e 100644
--- a/chromium/gin/wrappable.h
+++ b/chromium/gin/wrappable.h
@@ -5,6 +5,9 @@
#ifndef GIN_WRAPPABLE_H_
#define GIN_WRAPPABLE_H_
+#include <type_traits>
+
+#include "base/macros.h"
#include "base/template_util.h"
#include "gin/converter.h"
#include "gin/gin_export.h"
@@ -101,9 +104,10 @@ class Wrappable : public WrappableBase {
// This converter handles any subclass of Wrappable.
-template<typename T>
-struct Converter<T*, typename base::enable_if<
- base::is_convertible<T*, WrappableBase*>::value>::type> {
+template <typename T>
+struct Converter<T*,
+ typename std::enable_if<
+ base::is_convertible<T*, WrappableBase*>::value>::type> {
static v8::Local<v8::Value> ToV8(v8::Isolate* isolate, T* val) {
return val->GetWrapper(isolate);
}
diff --git a/chromium/gin/wrappable_unittest.cc b/chromium/gin/wrappable_unittest.cc
index 07d4fb30676..e773d2d2839 100644
--- a/chromium/gin/wrappable_unittest.cc
+++ b/chromium/gin/wrappable_unittest.cc
@@ -3,6 +3,7 @@
// found in the LICENSE file.
#include "base/logging.h"
+#include "base/macros.h"
#include "gin/arguments.h"
#include "gin/handle.h"
#include "gin/object_template_builder.h"