Ignore:
Timestamp:
Apr 13, 2006, 2:24:42 PM (19 years ago)
Author:
ggaren
Message:

JavaScriptCore:

Reviewed by Darin.

  • kjs/internal.cpp: (KJS::InterpreterImp::initGlobalObject): Add the built-in object prototype to the end of the global object's prototype chain instead of just blowing away its existing prototype. We need to do this because the window object has a meaningful prototype now.

LayoutTests:

Layout test for document.defaultView

  • fast/dom/defaultView-expected.txt: Added.
  • fast/dom/defaultView.html: Added.
  • fast/events/event-view-toString-expected.txt: Updated to reflect new prototype chain for defaultView.

WebCore:

Reviewed by Darin.

  • Fixed <rdar://problem/4478467> document.defaultView should return the window object


Also made part of the window object autogenerated by IDL file.


  • DerivedSources.make: Added /page to IDL file search path, added JSDOMWindow.h, removed kjs_views.lut.h
  • WebCore.xcodeproj/project.pbxproj: Added missing files, removed obsolete files
  • bindings/js/kjs_dom.cpp:
  • bindings/js/kjs_events.cpp:
  • bindings/js/kjs_proxy.cpp: (WebCore::KJSProxy::initScriptIfNeeded):
  • bindings/js/kjs_views.cpp: Removed.
  • bindings/js/kjs_views.h: Removed.
  • bindings/js/kjs_window.cpp: Removed document property -- it now belongs to JSDOMWindow. Added toJS and toDOMWindow. (KJS::Window::Window): (KJS::Window::impl): (KJS::Window::getValueProperty): (KJS::Window::clear): Added call to setPrototype to ensure that the prototype gets cleared during navigation. (Previously this wasn't an issue because the window object had no real prototype.) (WebCore::toJS): (WebCore::toDOMWindow):
  • bindings/js/kjs_window.h: (KJS::Window::):
  • bindings/objc/DOMCSS.mm: Added NULL checks for the AbstractView (Presumably this is an issue after the window is closed.) Typedef-ed AbstractView as DOMWindow. I could have just replaced AbstractView with DOMWindow, but I think it's clearer to say, "There's this thing called the AbstractView, but really it's just the window." (-[DOMDocument getComputedStyle::]): (-[DOMDocument getMatchedCSSRules::]):
  • bindings/objc/DOMViews.mm:
  • bindings/objc/DOMViewsInternal.h:
  • bindings/scripts/CodeGeneratorJS.pm: Removed unused GetLegacyImplementationIncludes. Added support for DOMWindow and new "DoNotCache" attribute. Replaced C macros with text because (1) it makes the generated source easier to read and debug and (2) it made it much easier to implement the DoNotCache attribute.
  • bindings/scripts/IDLParser.pm: Return a hash reference instead of a hash, because otherwise an interface with more than one attribute returns too many arguments to be processed.
  • bridge/mac/FrameMac.mm:
  • dom/AbstractView.cpp: Removed.
  • dom/AbstractView.h: Removed.
  • dom/Document.cpp: (WebCore::Document::Document): (WebCore::Document::defaultView):
  • dom/Document.h:
  • dom/Document.idl:
  • dom/KeyboardEvent.idl:
  • dom/MouseEvent.idl:
  • dom/Position.cpp:
  • dom/UIEvent.idl:
  • dom/dom2_eventsimpl.h:
  • page/DOMWindow.cpp: Added. (WebCore::DOMWindow::DOMWindow): (WebCore::DOMWindow::frame): (WebCore::DOMWindow::disconnectFrame): (WebCore::DOMWindow::document): (WebCore::DOMWindow::getComputedStyle): (WebCore::DOMWindow::getMatchedCSSRules):
  • page/DOMWindow.h: Added.
  • page/DOMWindow.idl: Added.
  • page/Frame.cpp: (WebCore::Frame::~Frame): Disconnect the new DOMWindow object in addition to the Window object. Maybe we can unify this in the future. (WebCore::Frame::tree): (WebCore::Frame::domWindow):
  • page/Frame.h:
  • page/FramePrivate.h:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/JavaScriptCore/kjs/internal.cpp

    r13597 r13865  
    327327  b_ErrorPrototype = errorProto;
    328328
    329   static_cast<JSObject*>(global)->setPrototype(b_ObjectPrototype);
     329  JSObject* o = global;
     330  while (o->prototype()->isObject())
     331      o = static_cast<JSObject*>(o->prototype());
     332  o->setPrototype(b_ObjectPrototype);
    330333
    331334  // Constructors (Object, Array, etc.)
Note: See TracChangeset for help on using the changeset viewer.