Index: Source/bindings/dart/custom/DartWindowCustom.cpp |
diff --git a/Source/bindings/dart/custom/DartWindowCustom.cpp b/Source/bindings/dart/custom/DartWindowCustom.cpp |
index d962408be3bdcb3b3857232291ec01fc0f8acd59..5f8811f1d8e3a1e0eb93661b53717ba30e9c91d1 100644 |
--- a/Source/bindings/dart/custom/DartWindowCustom.cpp |
+++ b/Source/bindings/dart/custom/DartWindowCustom.cpp |
@@ -75,6 +75,12 @@ void historyCrossFrameGetter(Dart_NativeArguments args) |
DOMWindow* receiver = DartDOMWrapper::receiver<DOMWindow>(args); |
DartDOMData* domData = static_cast<DartDOMData*>(Dart_GetNativeIsolateData(args)); |
+ Dart_WeakPersistentHandle existingWrapper = DartDOMWrapper::lookupWrapper<DartHistory>(domData, &receiver->history()); |
+ if (existingWrapper) { |
+ Dart_SetWeakHandleReturnValue(args, existingWrapper); |
+ return; |
+ } |
+ |
Dart_Handle result = DartDOMWrapper::createWrapper<DartHistory>( |
domData, &receiver->history(), _HistoryCrossFrameClassId); |
if (result) |
@@ -88,6 +94,12 @@ void locationCrossFrameGetter(Dart_NativeArguments args) |
DOMWindow* receiver = DartDOMWrapper::receiver<DOMWindow>(args); |
DartDOMData* domData = static_cast<DartDOMData*>(Dart_GetNativeIsolateData(args)); |
+ Dart_WeakPersistentHandle existingWrapper = DartDOMWrapper::lookupWrapper<DartLocation>(domData, &receiver->location()); |
+ if (existingWrapper) { |
+ Dart_SetWeakHandleReturnValue(args, existingWrapper); |
+ return; |
+ } |
+ |
Dart_Handle result = DartDOMWrapper::createWrapper<DartLocation>( |
domData, &receiver->location(), _LocationCrossFrameClassId); |
if (result) |