OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2009, 2011 Google Inc. All rights reserved. | 2 * Copyright (C) 2009, 2011 Google Inc. All rights reserved. |
3 * | 3 * |
4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
5 * modification, are permitted provided that the following conditions are | 5 * modification, are permitted provided that the following conditions are |
6 * met: | 6 * met: |
7 * | 7 * |
8 * * Redistributions of source code must retain the above copyright | 8 * * Redistributions of source code must retain the above copyright |
9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
10 * * Redistributions in binary form must reproduce the above | 10 * * Redistributions in binary form must reproduce the above |
(...skipping 199 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
210 return; | 210 return; |
211 } | 211 } |
212 | 212 |
213 // Opener can be shadowed if it is in the same domain. | 213 // Opener can be shadowed if it is in the same domain. |
214 // Have a special handling of null value to behave | 214 // Have a special handling of null value to behave |
215 // like Firefox. See bug http://b/1224887 & http://b/791706. | 215 // like Firefox. See bug http://b/1224887 & http://b/791706. |
216 if (value->IsNull()) { | 216 if (value->IsNull()) { |
217 // imp->frame() cannot be null, | 217 // imp->frame() cannot be null, |
218 // otherwise, SameOrigin check would have failed. | 218 // otherwise, SameOrigin check would have failed. |
219 ASSERT(imp->frame()); | 219 ASSERT(imp->frame()); |
220 imp->frame()->loader()->setOpener(0); | 220 imp->frame()->loader().setOpener(0); |
221 } | 221 } |
222 | 222 |
223 // Delete the accessor from this object. | 223 // Delete the accessor from this object. |
224 info.Holder()->Delete(name); | 224 info.Holder()->Delete(name); |
225 | 225 |
226 // Put property on the front (this) object. | 226 // Put property on the front (this) object. |
227 info.This()->Set(name, value); | 227 info.This()->Set(name, value); |
228 } | 228 } |
229 | 229 |
230 static bool isLegacyTargetOriginDesignation(v8::Handle<v8::Value> value) | 230 static bool isLegacyTargetOriginDesignation(v8::Handle<v8::Value> value) |
(...skipping 215 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
446 | 446 |
447 DOMWindow* targetWindow = V8Window::toNative(window); | 447 DOMWindow* targetWindow = V8Window::toNative(window); |
448 | 448 |
449 ASSERT(targetWindow); | 449 ASSERT(targetWindow); |
450 | 450 |
451 Frame* target = targetWindow->frame(); | 451 Frame* target = targetWindow->frame(); |
452 if (!target) | 452 if (!target) |
453 return false; | 453 return false; |
454 | 454 |
455 // Notify the loader's client if the initial document has been accessed. | 455 // Notify the loader's client if the initial document has been accessed. |
456 if (target->loader()->stateMachine()->isDisplayingInitialEmptyDocument()) | 456 if (target->loader().stateMachine()->isDisplayingInitialEmptyDocument()) |
457 target->loader()->didAccessInitialDocument(); | 457 target->loader().didAccessInitialDocument(); |
458 | 458 |
459 if (key->IsString()) { | 459 if (key->IsString()) { |
460 DEFINE_STATIC_LOCAL(AtomicString, nameOfProtoProperty, ("__proto__", Ato
micString::ConstructFromLiteral)); | 460 DEFINE_STATIC_LOCAL(AtomicString, nameOfProtoProperty, ("__proto__", Ato
micString::ConstructFromLiteral)); |
461 | 461 |
462 String name = toWebCoreString(key.As<v8::String>()); | 462 String name = toWebCoreString(key.As<v8::String>()); |
463 Frame* childFrame = target->tree().scopedChild(name); | 463 Frame* childFrame = target->tree().scopedChild(name); |
464 // Notice that we can't call HasRealNamedProperty for ACCESS_HAS | 464 // Notice that we can't call HasRealNamedProperty for ACCESS_HAS |
465 // because that would generate infinite recursion. | 465 // because that would generate infinite recursion. |
466 if (type == v8::ACCESS_HAS && childFrame) | 466 if (type == v8::ACCESS_HAS && childFrame) |
467 return true; | 467 return true; |
(...skipping 21 matching lines...) Expand all Loading... |
489 | 489 |
490 DOMWindow* targetWindow = V8Window::toNative(window); | 490 DOMWindow* targetWindow = V8Window::toNative(window); |
491 | 491 |
492 ASSERT(targetWindow); | 492 ASSERT(targetWindow); |
493 | 493 |
494 Frame* target = targetWindow->frame(); | 494 Frame* target = targetWindow->frame(); |
495 if (!target) | 495 if (!target) |
496 return false; | 496 return false; |
497 | 497 |
498 // Notify the loader's client if the initial document has been accessed. | 498 // Notify the loader's client if the initial document has been accessed. |
499 if (target->loader()->stateMachine()->isDisplayingInitialEmptyDocument()) | 499 if (target->loader().stateMachine()->isDisplayingInitialEmptyDocument()) |
500 target->loader()->didAccessInitialDocument(); | 500 target->loader().didAccessInitialDocument(); |
501 | 501 |
502 Frame* childFrame = target->tree().scopedChild(index); | 502 Frame* childFrame = target->tree().scopedChild(index); |
503 | 503 |
504 // Notice that we can't call HasRealNamedProperty for ACCESS_HAS | 504 // Notice that we can't call HasRealNamedProperty for ACCESS_HAS |
505 // because that would generate infinite recursion. | 505 // because that would generate infinite recursion. |
506 if (type == v8::ACCESS_HAS && childFrame) | 506 if (type == v8::ACCESS_HAS && childFrame) |
507 return true; | 507 return true; |
508 if (type == v8::ACCESS_GET | 508 if (type == v8::ACCESS_GET |
509 && childFrame | 509 && childFrame |
510 && !host->HasRealIndexedProperty(index) | 510 && !host->HasRealIndexedProperty(index) |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
543 v8::Handle<v8::Context> context = frame->script().currentWorldContext(); | 543 v8::Handle<v8::Context> context = frame->script().currentWorldContext(); |
544 if (context.IsEmpty()) | 544 if (context.IsEmpty()) |
545 return v8Undefined(); | 545 return v8Undefined(); |
546 | 546 |
547 v8::Handle<v8::Object> global = context->Global(); | 547 v8::Handle<v8::Object> global = context->Global(); |
548 ASSERT(!global.IsEmpty()); | 548 ASSERT(!global.IsEmpty()); |
549 return global; | 549 return global; |
550 } | 550 } |
551 | 551 |
552 } // namespace WebCore | 552 } // namespace WebCore |
OLD | NEW |