Changeset 23573 in webkit


Ignore:
Timestamp:
Jun 18, 2007 4:04:07 PM (17 years ago)
Author:
weinig
Message:

Reviewed by Geoff.

Patch for http://bugs.webkit.org/show_bug.cgi?id=14211
Move the BarInfo object out of the JS bindings

  • DerivedSources.make:
  • WebCore.pro:
  • WebCore.vcproj/WebCore.vcproj:
  • WebCore.xcodeproj/project.pbxproj:
  • bindings/js/kjs_window.cpp: (KJS::WindowPrivate::WindowPrivate): (KJS::Window::mark): (KJS::Window::getValueProperty): (KJS::Window::clearHelperObjectProperties): (KJS::Window::disconnectFrame):
  • bindings/js/kjs_window.h: (KJS::Window::):
  • page/BarInfo.cpp: Added. (WebCore::BarInfo::BarInfo): (WebCore::BarInfo::disconnectFrame): (WebCore::BarInfo::visible):
  • page/BarInfo.h: Added. (WebCore::BarInfo::):
  • page/BarInfo.idl: Added.
  • page/DOMWindow.cpp: (WebCore::DOMWindow::~DOMWindow): (WebCore::DOMWindow::disconnectFrame): (WebCore::DOMWindow::locationbar): (WebCore::DOMWindow::menubar): (WebCore::DOMWindow::personalbar): (WebCore::DOMWindow::scrollbars): (WebCore::DOMWindow::statusbar): (WebCore::DOMWindow::toolbar):
  • page/DOMWindow.h:
  • page/DOMWindow.idl:
Location:
trunk/WebCore
Files:
3 added
10 edited

Legend:

Unmodified
Added
Removed
  • trunk/WebCore/ChangeLog

    r23567 r23573  
     12007-06-18  Sam Weinig  <sam@webkit.org>
     2
     3        Reviewed by Geoff.
     4
     5        Patch for http://bugs.webkit.org/show_bug.cgi?id=14211
     6        Move the BarInfo object out of the JS bindings
     7
     8        * DerivedSources.make:
     9        * WebCore.pro:
     10        * WebCore.vcproj/WebCore.vcproj:
     11        * WebCore.xcodeproj/project.pbxproj:
     12        * bindings/js/kjs_window.cpp:
     13        (KJS::WindowPrivate::WindowPrivate):
     14        (KJS::Window::mark):
     15        (KJS::Window::getValueProperty):
     16        (KJS::Window::clearHelperObjectProperties):
     17        (KJS::Window::disconnectFrame):
     18        * bindings/js/kjs_window.h:
     19        (KJS::Window::):
     20        * page/BarInfo.cpp: Added.
     21        (WebCore::BarInfo::BarInfo):
     22        (WebCore::BarInfo::disconnectFrame):
     23        (WebCore::BarInfo::visible):
     24        * page/BarInfo.h: Added.
     25        (WebCore::BarInfo::):
     26        * page/BarInfo.idl: Added.
     27        * page/DOMWindow.cpp:
     28        (WebCore::DOMWindow::~DOMWindow):
     29        (WebCore::DOMWindow::disconnectFrame):
     30        (WebCore::DOMWindow::locationbar):
     31        (WebCore::DOMWindow::menubar):
     32        (WebCore::DOMWindow::personalbar):
     33        (WebCore::DOMWindow::scrollbars):
     34        (WebCore::DOMWindow::statusbar):
     35        (WebCore::DOMWindow::toolbar):
     36        * page/DOMWindow.h:
     37        * page/DOMWindow.idl:
     38
    1392007-06-18  Sam Weinig  <sam@webkit.org>
    240
  • trunk/WebCore/DerivedSources.make

    r23557 r23573  
    300300    HTMLEntityNames.c \
    301301    JSAttr.h \
     302    JSBarInfo.h \
    302303    JSCDATASection.h \
    303304    JSCSSCharsetRule.h \
  • trunk/WebCore/WebCore.pro

    r23564 r23573  
    257257    html/HTMLTitleElement.idl \
    258258    html/HTMLUListElement.idl \
     259    page/BarInfo.idl \
    259260    page/DOMWindow.idl \
    260261    xml/DOMParser.idl \
     
    558559    loader/TextDocument.cpp \
    559560    loader/TextResourceDecoder.cpp \
     561    page/BarInfo.cpp \
    560562    page/Chrome.cpp \
    561563    page/ContextMenuController.cpp \
  • trunk/WebCore/WebCore.vcproj/WebCore.vcproj

    r23560 r23573  
    348348                        </File>
    349349                        <File
     350                                RelativePath="$(WebKitOutputDir)\obj\$(ProjectName)\DerivedSources\JSBarInfo.cpp"
     351                                >
     352                        </File>
     353                        <File
     354                                RelativePath="$(WebKitOutputDir)\obj\$(ProjectName)\DerivedSources\JSBarInfo.h"
     355                                >
     356                        </File>
     357                        <File
    350358                                RelativePath="$(WebKitOutputDir)\obj\$(ProjectName)\DerivedSources\JSCanvasGradient.cpp"
    351359                                >
     
    23382346                        Name="page"
    23392347                        >
     2348                        <File
     2349                                RelativePath="..\page\BarInfo.cpp"
     2350                                >
     2351                        </File>
     2352                        <File
     2353                                RelativePath="..\page\BarInfo.h"
     2354                                >
     2355                        </File>
    23402356                        <File
    23412357                                RelativePath="..\page\Chrome.cpp"
  • trunk/WebCore/WebCore.xcodeproj/project.pbxproj

    r23557 r23573  
    27352735                BC06EE040BFD71AA00856E9D /* JSHTMLTableElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC06EE020BFD71AA00856E9D /* JSHTMLTableElement.cpp */; };
    27362736                BC06EE050BFD71AA00856E9D /* JSHTMLTableElement.h in Headers */ = {isa = PBXBuildFile; fileRef = BC06EE030BFD71AA00856E9D /* JSHTMLTableElement.h */; };
     2737                BC124EE70C2641CD009E2349 /* BarInfo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC124EE40C2641CD009E2349 /* BarInfo.cpp */; };
     2738                BC124EE80C2641CD009E2349 /* BarInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = BC124EE50C2641CD009E2349 /* BarInfo.h */; };
     2739                BC124EE90C2641CD009E2349 /* BarInfo.idl in Resources */ = {isa = PBXBuildFile; fileRef = BC124EE60C2641CD009E2349 /* BarInfo.idl */; };
     2740                BC124EFF0C26447A009E2349 /* JSBarInfo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC124EFD0C26447A009E2349 /* JSBarInfo.cpp */; };
     2741                BC124F000C26447A009E2349 /* JSBarInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = BC124EFE0C26447A009E2349 /* JSBarInfo.h */; };
    27372742                BC17F9660B64EBB8004A65CB /* JSHTMLSelectElementCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC17F9650B64EBB8004A65CB /* JSHTMLSelectElementCustom.cpp */; };
    27382743                BC18C5D00B2A886F0018461D /* TextBreakIterator.h in Headers */ = {isa = PBXBuildFile; fileRef = BC18C5CE0B2A886F0018461D /* TextBreakIterator.h */; };
     
    60286033                BC06F24B06D18A7E004A6FA3 /* XSLTProcessor.cpp */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.cpp.cpp; path = XSLTProcessor.cpp; sourceTree = "<group>"; tabWidth = 8; usesTabs = 0; };
    60296034                BC06F24C06D18A7E004A6FA3 /* XSLTProcessor.h */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = XSLTProcessor.h; sourceTree = "<group>"; tabWidth = 8; usesTabs = 0; };
     6035                BC124EE40C2641CD009E2349 /* BarInfo.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = BarInfo.cpp; sourceTree = "<group>"; };
     6036                BC124EE50C2641CD009E2349 /* BarInfo.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = BarInfo.h; sourceTree = "<group>"; };
     6037                BC124EE60C2641CD009E2349 /* BarInfo.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = BarInfo.idl; sourceTree = "<group>"; };
     6038                BC124EFD0C26447A009E2349 /* JSBarInfo.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSBarInfo.cpp; sourceTree = "<group>"; };
     6039                BC124EFE0C26447A009E2349 /* JSBarInfo.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSBarInfo.h; sourceTree = "<group>"; };
    60306040                BC17F9650B64EBB8004A65CB /* JSHTMLSelectElementCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSHTMLSelectElementCustom.cpp; sourceTree = "<group>"; };
    60316041                BC18C5CE0B2A886F0018461D /* TextBreakIterator.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = TextBreakIterator.h; sourceTree = "<group>"; };
     
    64716481                        isa = PBXGroup;
    64726482                        children = (
     6483                                BC124EFD0C26447A009E2349 /* JSBarInfo.cpp */,
     6484                                BC124EFE0C26447A009E2349 /* JSBarInfo.h */,
    64736485                                65DF31D809D1C122000BE325 /* JSAttr.cpp */,
    64746486                                65DF31D909D1C123000BE325 /* JSAttr.h */,
     
    71997211                                93C09A820B064F05005ABD4D /* mac */,
    72007212                                8538F0000AD71770006A81D1 /* AbstractView.idl */,
     7213                                BC124EE40C2641CD009E2349 /* BarInfo.cpp */,
     7214                                BC124EE50C2641CD009E2349 /* BarInfo.h */,
     7215                                BC124EE60C2641CD009E2349 /* BarInfo.idl */,
    72017216                                14D8238A0AF92DF60004F057 /* Chrome.cpp */,
    72027217                                14D823500AF92A790004F057 /* Chrome.h */,
     7218                                14D824060AF93AEB0004F057 /* ChromeClient.h */,
    72037219                                065AD4F20B0C2EDA005A2B1D /* ContextMenuClient.h */,
    72047220                                065AD4F30B0C2EDA005A2B1D /* ContextMenuController.cpp */,
    72057221                                065AD4F40B0C2EDA005A2B1D /* ContextMenuController.h */,
    7206                                 14D824060AF93AEB0004F057 /* ChromeClient.h */,
    72077222                                1403B99609EB13AF00797C7F /* DOMWindow.cpp */,
    72087223                                1403B99509EB13AF00797C7F /* DOMWindow.h */,
    72097224                                1403B90C09EB124500797C7F /* DOMWindow.idl */,
     7225                                A718760D0B2A120100A16ECE /* DragActions.h */,
     7226                                A7CA59620B27C1F200FA021D /* DragClient.h */,
     7227                                A7CA595C0B27BD9E00FA021D /* DragController.cpp */,
     7228                                A7CA595B0B27BD9E00FA021D /* DragController.h */,
     7229                                93C09A800B064F00005ABD4D /* EventHandler.cpp */,
    72107230                                93C09A520B064DB3005ABD4D /* EventHandler.h */,
    7211                                 93C09A800B064F00005ABD4D /* EventHandler.cpp */,
     7231                                14993BE30B2F2B1C0050497F /* FocusController.cpp */,
    72127232                                14993BE40B2F2B1C0050497F /* FocusController.h */,
    7213                                 14993BE30B2F2B1C0050497F /* FocusController.cpp */,
    72147233                                062287830B4DB322000C34DF /* FocusDirection.h */,
    72157234                                65BF02290974816300C43196 /* Frame.cpp */,
     
    72267245                                65A21467097A329100B9050A /* Page.h */,
    72277246                                65D1C1C909932B22000CB324 /* Plugin.h */,
     7247                                14C9A5E90B3D105F005A0232 /* Settings.cpp */,
    72287248                                F587863A02DE3A1401EA4122 /* Settings.h */,
    7229                                 A7CA595B0B27BD9E00FA021D /* DragController.h */,
    7230                                 A7CA595C0B27BD9E00FA021D /* DragController.cpp */,
    7231                                 A7CA59620B27C1F200FA021D /* DragClient.h */,
    7232                                 A718760D0B2A120100A16ECE /* DragActions.h */,
    7233                                 14C9A5E90B3D105F005A0232 /* Settings.cpp */,
    72347249                        );
    72357250                        path = page;
     
    1156011575                                BCFE2F120C1B58380020235F /* JSRect.h in Headers */,
    1156111576                                BC4368E80C226E32005EFB5F /* Rect.h in Headers */,
     11577                                BC124EE80C2641CD009E2349 /* BarInfo.h in Headers */,
     11578                                BC124F000C26447A009E2349 /* JSBarInfo.h in Headers */,
    1156211579                        );
    1156311580                        runOnlyForDeploymentPostprocessing = 0;
     
    1167311690                                1AB1AE7A0C051FDE00139F4F /* zoomInCursor.png in Resources */,
    1167411691                                1AB1AE7B0C051FDE00139F4F /* zoomOutCursor.png in Resources */,
     11692                                BC124EE90C2641CD009E2349 /* BarInfo.idl in Resources */,
    1167511693                        );
    1167611694                        runOnlyForDeploymentPostprocessing = 0;
     
    1298413002                                BCCBAD400C18C14200CE890F /* JSHTMLCollection.cpp in Sources */,
    1298513003                                BCFE2F110C1B58370020235F /* JSRect.cpp in Sources */,
     13004                                BC124EE70C2641CD009E2349 /* BarInfo.cpp in Sources */,
     13005                                BC124EFF0C26447A009E2349 /* JSBarInfo.cpp in Sources */,
    1298613006                        );
    1298713007                        runOnlyForDeploymentPostprocessing = 0;
  • trunk/WebCore/bindings/js/kjs_window.cpp

    r23567 r23573  
    8787        , loc(0)
    8888        , m_selection(0)
    89         , m_locationbar(0)
    90         , m_menubar(0)
    91         , m_personalbar(0)
    92         , m_scrollbars(0)
    93         , m_statusbar(0)
    94         , m_toolbar(0)
    9589        , m_evt(0)
    9690        , m_returnValueSlot(0)
     
    106100    mutable Location* loc;
    107101    mutable Selection* m_selection;
    108     mutable BarInfo* m_locationbar;
    109     mutable BarInfo* m_menubar;
    110     mutable BarInfo* m_personalbar;
    111     mutable BarInfo* m_scrollbars;
    112     mutable BarInfo* m_statusbar;
    113     mutable BarInfo* m_toolbar;
    114102    WebCore::Event *m_evt;
    115103    JSValue **m_returnValueSlot;
     
    256244  length        Window::Length          DontDelete|ReadOnly
    257245  location      Window::Location_       DontDelete
    258   locationbar   Window::Locationbar     DontDelete
    259246  name          Window::Name            DontDelete
    260247  navigator     Window::Navigator_      DontDelete|ReadOnly
    261248  clientInformation     Window::ClientInformation       DontDelete|ReadOnly
    262   menubar       Window::Menubar         DontDelete|ReadOnly
    263249  offscreenBuffering    Window::OffscreenBuffering      DontDelete|ReadOnly
    264250  opener        Window::Opener          DontDelete|ReadOnly
     
    268254  pageYOffset   Window::PageYOffset     DontDelete|ReadOnly
    269255  parent        Window::Parent          DontDelete|ReadOnly
    270   personalbar   Window::Personalbar     DontDelete|ReadOnly
    271256  screenX       Window::ScreenX         DontDelete|ReadOnly
    272257  screenY       Window::ScreenY         DontDelete|ReadOnly
    273258  screenLeft    Window::ScreenLeft      DontDelete|ReadOnly
    274259  screenTop     Window::ScreenTop       DontDelete|ReadOnly
    275   scrollbars    Window::Scrollbars      DontDelete|ReadOnly
    276   statusbar     Window::Statusbar       DontDelete|ReadOnly
    277   toolbar       Window::Toolbar         DontDelete|ReadOnly
    278260  scroll        Window::Scroll          DontDelete|Function 2
    279261  scrollBy      Window::ScrollBy        DontDelete|Function 2
     
    429411}
    430412
    431 BarInfo *Window::locationbar(ExecState *exec) const
    432 {
    433   if (!d->m_locationbar)
    434     d->m_locationbar = new BarInfo(exec, m_frame, BarInfo::Locationbar);
    435   return d->m_locationbar;
    436 }
    437 
    438 BarInfo *Window::menubar(ExecState *exec) const
    439 {
    440   if (!d->m_menubar)
    441     d->m_menubar = new BarInfo(exec, m_frame, BarInfo::Menubar);
    442   return d->m_menubar;
    443 }
    444 
    445 BarInfo *Window::personalbar(ExecState *exec) const
    446 {
    447   if (!d->m_personalbar)
    448     d->m_personalbar = new BarInfo(exec, m_frame, BarInfo::Personalbar);
    449   return d->m_personalbar;
    450 }
    451 
    452 BarInfo *Window::statusbar(ExecState *exec) const
    453 {
    454   if (!d->m_statusbar)
    455     d->m_statusbar = new BarInfo(exec, m_frame, BarInfo::Statusbar);
    456   return d->m_statusbar;
    457 }
    458 
    459 BarInfo *Window::toolbar(ExecState *exec) const
    460 {
    461   if (!d->m_toolbar)
    462     d->m_toolbar = new BarInfo(exec, m_frame, BarInfo::Toolbar);
    463   return d->m_toolbar;
    464 }
    465 
    466 BarInfo *Window::scrollbars(ExecState *exec) const
    467 {
    468   if (!d->m_scrollbars)
    469     d->m_scrollbars = new BarInfo(exec, m_frame, BarInfo::Scrollbars);
    470   return d->m_scrollbars;
    471 }
    472 
    473413// reference our special objects during garbage collection
    474414void Window::mark()
     
    483423  if (d->m_selection && !d->m_selection->marked())
    484424    d->m_selection->mark();
    485   if (d->m_locationbar && !d->m_locationbar->marked())
    486     d->m_locationbar->mark();
    487   if (d->m_menubar && !d->m_menubar->marked())
    488     d->m_menubar->mark();
    489   if (d->m_personalbar && !d->m_personalbar->marked())
    490     d->m_personalbar->mark();
    491   if (d->m_scrollbars && !d->m_scrollbars->marked())
    492     d->m_scrollbars->mark();
    493   if (d->m_statusbar && !d->m_statusbar->marked())
    494     d->m_statusbar->mark();
    495   if (d->m_toolbar && !d->m_toolbar->marked())
    496     d->m_toolbar->mark();
    497425}
    498426
     
    752680      return n;
    753681    }
    754     case Locationbar:
    755       return locationbar(exec);
    756     case Menubar:
    757       return menubar(exec);
    758682    case OffscreenBuffering:
    759683      return jsBoolean(true);
     
    778702    case Parent:
    779703      return retrieve(m_frame->tree()->parent() ? m_frame->tree()->parent() : m_frame);
    780     case Personalbar:
    781       return personalbar(exec);
    782704    case ScreenLeft:
    783705    case ScreenX:
     
    796718      updateLayout();
    797719      return jsNumber(m_frame->view()->contentsY());
    798     case Scrollbars:
    799       return scrollbars(exec);
    800     case Statusbar:
    801       return statusbar(exec);
    802     case Toolbar:
    803       return toolbar(exec);
    804720    case Self:
    805721    case Window_:
     
    13751291  d->loc = 0;
    13761292  d->m_selection = 0;
    1377   d->m_locationbar = 0;
    1378   d->m_menubar = 0;
    1379   d->m_personalbar = 0;
    1380   d->m_scrollbars = 0;
    1381   d->m_statusbar = 0;
    1382   d->m_toolbar = 0;
    13831293  d->m_evt = 0;
    13841294}
     
    20151925    if (d->m_selection)
    20161926        d->m_selection->m_frame = 0;
    2017     if (d->m_locationbar)
    2018         d->m_locationbar->m_frame = 0;
    2019     if (d->m_menubar)
    2020         d->m_menubar->m_frame = 0;
    2021     if (d->m_personalbar)
    2022         d->m_personalbar->m_frame = 0;
    2023     if (d->m_statusbar)
    2024         d->m_statusbar->m_frame = 0;
    2025     if (d->m_toolbar)
    2026         d->m_toolbar->m_frame = 0;
    2027     if (d->m_scrollbars)
    2028         d->m_scrollbars->m_frame = 0;
    20291927    if (d->history)
    20301928        d->history->disconnectFrame();
     
    23862284}
    23872285
    2388 ////////////////////// BarInfo Object ////////////////////////
    2389 
    2390 const ClassInfo BarInfo::info = { "BarInfo", 0, &BarInfoTable, 0 };
    2391 /*
    2392 @begin BarInfoTable 1
    2393   visible                BarInfo::Visible                        DontDelete|ReadOnly
    2394 @end
    2395 */
    2396 BarInfo::BarInfo(ExecState *exec, Frame *f, Type barType)
    2397   : m_frame(f)
    2398   , m_type(barType)
    2399 {
    2400   setPrototype(exec->lexicalInterpreter()->builtinObjectPrototype());
    2401 }
    2402 
    2403 JSValue *BarInfo::getValueProperty(ExecState *exec, int token) const
    2404 {
    2405     ASSERT(token == Visible);
    2406     switch (m_type) {
    2407     case Locationbar:
    2408         return jsBoolean(m_frame->page()->chrome()->toolbarsVisible());
    2409     case Toolbar:
    2410         return jsBoolean(m_frame->page()->chrome()->toolbarsVisible());
    2411     case Personalbar:
    2412         return jsBoolean(m_frame->page()->chrome()->toolbarsVisible());
    2413     case Menubar:
    2414         return jsBoolean(m_frame->page()->chrome()->menubarVisible());
    2415     case Scrollbars:
    2416         return jsBoolean(m_frame->page()->chrome()->scrollbarsVisible());
    2417     case Statusbar:
    2418         return jsBoolean(m_frame->page()->chrome()->statusbarVisible());
    2419     default:
    2420         return jsBoolean(false);
    2421     }
    2422 }
    2423 
    2424 bool BarInfo::getOwnPropertySlot(ExecState *exec, const Identifier& propertyName, PropertySlot& slot)
    2425 {
    2426   if (!m_frame)
    2427     return false;
    2428  
    2429   return getStaticValueSlot<BarInfo, JSObject>(exec, &BarInfoTable, this, propertyName, slot);
    2430 }
    2431 
    24322286////////////////////// History Object ////////////////////////
    24332287
  • trunk/WebCore/bindings/js/kjs_window.h

    r23567 r23573  
    133133    Selection *selection() const;
    134134    bool find(const WebCore::String&, bool, bool, bool, bool, bool, bool) const;
    135     BarInfo *locationbar(ExecState*) const;
    136     BarInfo *menubar(ExecState*) const;
    137     BarInfo *personalbar(ExecState*) const;
    138     BarInfo *scrollbars(ExecState*) const;
    139     BarInfo *statusbar(ExecState*) const;
    140     BarInfo *toolbar(ExecState*) const;
    141135
    142136    // Finds a wrapper of a JS EventListener, returns 0 if no existing one.
     
    171165    static const ClassInfo info;
    172166    enum { AToB, BToA, Closed, Crypto, DefaultStatus, Status, DOMException, Frames, History_, Event_, InnerHeight,
    173            InnerWidth, Length, Location_, Locationbar, Name, Navigator_, ClientInformation,
    174            Menubar, OffscreenBuffering, Opener, OuterHeight, OuterWidth, PageXOffset, PageYOffset,
    175            Parent, Personalbar, ScreenX, ScreenY, Scrollbars, Scroll, ScrollBy,
     167           InnerWidth, Length, Location_, Name, Navigator_, ClientInformation,
     168           OffscreenBuffering, Opener, OuterHeight, OuterWidth, PageXOffset, PageYOffset,
     169           Parent, ScreenX, ScreenY, Scroll, ScrollBy,
    176170           ScreenTop, ScreenLeft,
    177171           ScrollTo, ScrollX, ScrollY, MoveBy, MoveTo, ResizeBy, ResizeTo, Self, Window_, Top, Screen_,
     
    184178           Onmouseout, Onmouseover, Onmouseup, OnWindowMouseWheel, Onreset, Onresize, Onscroll, Onsearch,
    185179           Onselect, Onsubmit, Onunload, Onbeforeunload,
    186            Statusbar, Toolbar, FrameElement, ShowModalDialog, Find, Stop };
     180           FrameElement, ShowModalDialog, Find, Stop };
    187181
    188182  private:
     
    256250  };
    257251
    258   class BarInfo : public DOMObject {
    259   public:
    260     virtual bool getOwnPropertySlot(ExecState *, const Identifier&, PropertySlot&);
    261     JSValue *getValueProperty(ExecState *exec, int token) const;
    262     enum { Visible };
    263     enum Type { Locationbar, Menubar, Personalbar, Scrollbars, Statusbar, Toolbar };
    264     WebCore::Frame* frame() const { return m_frame; }
    265     virtual const ClassInfo* classInfo() const { return &info; }
    266     static const ClassInfo info;
    267   private:
    268     friend class Window;
    269     BarInfo(ExecState*, WebCore::Frame*, Type);
    270     WebCore::Frame* m_frame;
    271     Type m_type;
    272   };
    273 
    274252} // namespace
    275253
  • trunk/WebCore/page/DOMWindow.cpp

    r21367 r23573  
    2727#include "DOMWindow.h"
    2828
    29 #include "cssstyleselector.h"
    30 #include "Chrome.h"
     29#include "BarInfo.h"
    3130#include "CSSComputedStyleDeclaration.h"
    3231#include "CSSRuleList.h"
     32#include "Chrome.h"
    3333#include "Document.h"
    3434#include "Element.h"
     
    3737#include "Page.h"
    3838#include "Screen.h"
     39#include "cssstyleselector.h"
    3940
    4041namespace WebCore {
     
    4243DOMWindow::DOMWindow(Frame* f)
    4344    : m_frame(f)
     45{
     46}
     47
     48DOMWindow::~DOMWindow()
    4449{
    4550}
     
    5358{
    5459    m_frame = 0;
     60    if (m_locationbar)
     61        m_locationbar->disconnectFrame();
     62    if (m_menubar)
     63        m_menubar->disconnectFrame();
     64    if (m_personalbar)
     65        m_personalbar->disconnectFrame();
     66    if (m_scrollbars)
     67        m_scrollbars->disconnectFrame();
     68    if (m_statusbar)
     69        m_statusbar->disconnectFrame();
     70    if (m_toolbar)
     71        m_toolbar->disconnectFrame();
     72}
     73
     74BarInfo* DOMWindow::locationbar() const
     75{
     76    if (!m_locationbar)
     77        m_locationbar = new BarInfo(m_frame, BarInfo::Locationbar);
     78    return m_locationbar.get();
     79}
     80
     81BarInfo* DOMWindow::menubar() const
     82{
     83    if (!m_menubar)
     84        m_menubar = new BarInfo(m_frame, BarInfo::Menubar);
     85    return m_menubar.get();
     86}
     87
     88BarInfo* DOMWindow::personalbar() const
     89{
     90    if (!m_personalbar)
     91        m_personalbar = new BarInfo(m_frame, BarInfo::Personalbar);
     92    return m_personalbar.get();
     93}
     94
     95BarInfo* DOMWindow::scrollbars() const
     96{
     97    if (!m_scrollbars)
     98        m_scrollbars = new BarInfo(m_frame, BarInfo::Scrollbars);
     99    return m_scrollbars.get();
     100}
     101
     102BarInfo* DOMWindow::statusbar() const
     103{
     104    if (!m_statusbar)
     105        m_statusbar = new BarInfo(m_frame, BarInfo::Statusbar);
     106    return m_statusbar.get();
     107}
     108
     109BarInfo* DOMWindow::toolbar() const
     110{
     111    if (!m_toolbar)
     112        m_toolbar = new BarInfo(m_frame, BarInfo::Toolbar);
     113    return m_toolbar.get();
    55114}
    56115
  • trunk/WebCore/page/DOMWindow.h

    r16954 r23573  
    2828
    2929#include "Shared.h"
    30 #include <wtf/PassRefPtr.h>
     30#include <wtf/Forward.h>
     31#include <wtf/RefPtr.h>
    3132
    3233namespace WebCore {
     34
     35    class BarInfo;
    3336    class CSSRuleList;
    3437    class CSSStyleDeclaration;
     
    4144    public:
    4245        DOMWindow(Frame*);
     46        virtual ~DOMWindow();
     47
    4348        Frame* frame();
    4449        void disconnectFrame();
     50
     51        // DOM Level 0
     52        BarInfo* locationbar() const;
     53        BarInfo* menubar() const;
     54        BarInfo* personalbar() const;
     55        BarInfo* scrollbars() const;
     56        BarInfo* statusbar() const;
     57        BarInfo* toolbar() const;
     58
    4559
    4660        // DOM Level 2 AbstractView Interface
     
    5670    private:
    5771        Frame* m_frame;
     72        mutable RefPtr<BarInfo> m_locationbar;
     73        mutable RefPtr<BarInfo> m_menubar;
     74        mutable RefPtr<BarInfo> m_personalbar;
     75        mutable RefPtr<BarInfo> m_scrollbars;
     76        mutable RefPtr<BarInfo> m_statusbar;
     77        mutable RefPtr<BarInfo> m_toolbar;
    5878    };
    5979
  • trunk/WebCore/page/DOMWindow.idl

    r23557 r23573  
    2929    // For the same reason, there's no need to.
    3030    interface [LegacyParent=KJS::Window, DoNotCache, GenerateNativeConverter, CustomGetOwnPropertySlot] DOMWindow {
     31        // DOM Level 0
     32        readonly attribute BarInfo locationbar;
     33        readonly attribute BarInfo menubar;
     34        readonly attribute BarInfo personalbar;
     35        readonly attribute BarInfo scrollbars;
     36        readonly attribute BarInfo statusbar;
     37        readonly attribute BarInfo toolbar;
     38
    3139        // DOM Level 2 AbstractView Interface
    3240        readonly attribute Document document;
Note: See TracChangeset for help on using the changeset viewer.