• yukishiino's avatar
    v8binding: Makes Location's wrapper objects alive, really. · 8e12aef3
    yukishiino authored
    https://crbug.com/252482 demonstrates that
    a) V8HTMLDocument's locationAttributeGetter is NOT using a private
      property to keep the location's wrapper alive.
    b) Location.idl does NOT specify [DependentLifetime].
    c) V8 minor GC can collect a wrapper object of document.location
      if author script has no reference to it.
    d) V8Window::locationAttributeGetterCustom is using a private
      property to keep it alive, but it may be too late.  At c), V8
      may have already collected the location's wrapper object, and
      expandos may have been gone.
    
    The direct cause is that
    1) There are two paths to create a Location's wrapper object;
      window.location and document.location.
    2) document.location doesn't use a private property (keep_alive)
      though window.location uses it.
    
    This CL makes the following changes.
    i) Uses the wrapper tracing in order to make Location's wrapper
      objects alive.
    ii) Makes Location [DependentLifetime] so that the wrapper tracing
      works.
    
    BUG=252482
    
    Review-Url: https://codereview.chromium.org/2826393004
    Cr-Commit-Position: refs/heads/master@{#467313}
    8e12aef3
Name
Last commit
Last update
..
Python-Markdown Loading commit data...
SPIRV-Tools Loading commit data...
WebKit Loading commit data...
accessibility-audit Loading commit data...
accessibility_test_framework Loading commit data...
adobe Loading commit data...
afl Loading commit data...
analytics Loading commit data...
android_async_task Loading commit data...
android_crazy_linker Loading commit data...
android_data_chart Loading commit data...
android_media Loading commit data...
android_opengl Loading commit data...
android_platform Loading commit data...
android_protobuf Loading commit data...
android_support_test_runner Loading commit data...
android_swipe_refresh Loading commit data...
apache-portable-runtime Loading commit data...
apache-win32 Loading commit data...
apache_velocity Loading commit data...
apk-patch-size-estimator Loading commit data...
apple_apsl Loading commit data...
apple_sample_code Loading commit data...
ashmem Loading commit data...
binutils Loading commit data...
blanketjs Loading commit data...
boringssl Loading commit data...
bouncycastle Loading commit data...
brotli Loading commit data...
bspatch Loading commit data...
byte_buddy Loading commit data...
cacheinvalidation Loading commit data...
ced Loading commit data...
chaijs Loading commit data...
checkstyle Loading commit data...
cld Loading commit data...
cld_2 Loading commit data...
cld_3 Loading commit data...
closure_compiler Loading commit data...
colorama Loading commit data...
crashpad Loading commit data...
custom_tabs_client Loading commit data...
d3 Loading commit data...
decklink Loading commit data...
deqp Loading commit data...
devscripts Loading commit data...
dom_distiller_js Loading commit data...
drmemory Loading commit data...
elfutils Loading commit data...
errorprone Loading commit data...
espresso Loading commit data...
expat Loading commit data...
fips181 Loading commit data...
flatbuffers Loading commit data...
flot Loading commit data...
fontconfig Loading commit data...
freetype Loading commit data...
gardiner_mod Loading commit data...
gestures Loading commit data...
gif_player Loading commit data...
glslang Loading commit data...
glslang-angle Loading commit data...
google_appengine_cloudstorage Loading commit data...
google_input_tools Loading commit data...
google_toolbox_for_mac Loading commit data...
guava Loading commit data...
gvr-android-sdk Loading commit data...
haha Loading commit data...
hamcrest Loading commit data...
harfbuzz-ng Loading commit data...
hunspell Loading commit data...
iaccessible2 Loading commit data...
iccjpeg Loading commit data...
icu4j Loading commit data...
ijar Loading commit data...
inspector_protocol Loading commit data...
instrumented_libraries Loading commit data...
intellij Loading commit data...
isimpledom Loading commit data...
javax_inject Loading commit data...
jinja2 Loading commit data...
jmake Loading commit data...
jsoncpp Loading commit data...
jsr-305 Loading commit data...
jstemplate Loading commit data...
junit Loading commit data...
khronos Loading commit data...
lcov Loading commit data...
leakcanary Loading commit data...
leveldatabase Loading commit data...
libFuzzer Loading commit data...
libXNVCtrl Loading commit data...
libaddressinput Loading commit data...
libdrm Loading commit data...
libevdev Loading commit data...
libjingle_xmpp Loading commit data...
libjpeg Loading commit data...
liblouis Loading commit data...
libphonenumber Loading commit data...
libpng Loading commit data...
libprotobuf-mutator Loading commit data...
libsecret Loading commit data...
libsync Loading commit data...
libudev Loading commit data...
libusb Loading commit data...
libva Loading commit data...
libvpx Loading commit data...
libwebm Loading commit data...
libwebp Loading commit data...
libxml Loading commit data...
libxslt Loading commit data...
logilab Loading commit data...
lzma_sdk Loading commit data...
mach_override Loading commit data...
markdown Loading commit data...
markupsafe Loading commit data...
mesa Loading commit data...
minigbm Loading commit data...
mocha Loading commit data...
mockito Loading commit data...
modp_b64 Loading commit data...
molokocacao Loading commit data...
motemplate Loading commit data...
mozilla Loading commit data...
mt19937ar Loading commit data...
netty-tcnative Loading commit data...
netty4 Loading commit data...
node Loading commit data...
objenesis Loading commit data...
ocmock Loading commit data...
openh264 Loading commit data...
opus Loading commit data...
ots Loading commit data...
ow2_asm Loading commit data...
pexpect Loading commit data...
ply Loading commit data...
polymer Loading commit data...
proguard Loading commit data...
protobuf Loading commit data...
py_trace_event Loading commit data...
pycoverage Loading commit data...
pyftpdlib Loading commit data...
pylint Loading commit data...
pymock Loading commit data...
pywebsocket Loading commit data...
qcms Loading commit data...
qunit Loading commit data...
re2 Loading commit data...
requests Loading commit data...
retrolambda Loading commit data...
robolectric Loading commit data...
sfntly Loading commit data...
shaderc Loading commit data...
simplejson Loading commit data...
sinonjs Loading commit data...
smhasher Loading commit data...
snappy Loading commit data...
speech-dispatcher Loading commit data...
spirv-headers Loading commit data...
spirv-tools-angle Loading commit data...
sqlite Loading commit data...
sqlite4java Loading commit data...
sudden_motion_sensor Loading commit data...
tcmalloc Loading commit data...
tlslite Loading commit data...
typ Loading commit data...
ub-uiautomator Loading commit data...
usb_ids Loading commit data...
usrsctp Loading commit data...
v4l-utils Loading commit data...
visualmetrics Loading commit data...
vulkan Loading commit data...
vulkan-validation-layers Loading commit data...
wayland Loading commit data...
wayland-protocols Loading commit data...
wds Loading commit data...
web-animations-js Loading commit data...
webdriver Loading commit data...
webgl Loading commit data...
webrtc_overrides Loading commit data...
widevine Loading commit data...
woff2 Loading commit data...
wtl Loading commit data...
xstream Loading commit data...
yasm Loading commit data...
zlib Loading commit data...
.gitignore Loading commit data...
BUILD.gn Loading commit data...
DEPS Loading commit data...
OWNERS Loading commit data...
PRESUBMIT.py Loading commit data...
README.chromium Loading commit data...
README.chromium.template Loading commit data...