00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
#include "ecma/kjs_views.h"
00022
#include "ecma/kjs_css.h"
00023
#include "kjs_views.lut.h"
00024
00025
using namespace KJS;
00026
00027
00028
00029
const ClassInfo DOMAbstractView::info = {
"AbstractView", 0, &DOMAbstractViewTable, 0 };
00030
00031
00032
00033
00034
00035
00036 IMPLEMENT_PROTOFUNC_DOM(DOMAbstractViewFunc)
00037
00038 DOMAbstractView::DOMAbstractView(ExecState *exec, DOM::
AbstractView av)
00039 :
DOMObject(exec->interpreter()->builtinObjectPrototype()), abstractView(av) {}
00040
00041 DOMAbstractView::~DOMAbstractView()
00042 {
00043
ScriptInterpreter::forgetDOMObject(abstractView.handle());
00044 }
00045
00046 Value DOMAbstractView::tryGet(ExecState *exec,
const Identifier &p)
const
00047
{
00048
if ( p ==
"document" )
00049
return getDOMNode(exec,abstractView.document());
00050
else if ( p ==
"getComputedStyle" )
00051
return lookupOrCreateFunction<DOMAbstractViewFunc>(exec,p,
this,DOMAbstractView::GetComputedStyle,2,DontDelete|Function);
00052
else
00053
return DOMObject::tryGet(exec,p);
00054 }
00055
00056 Value DOMAbstractViewFunc::tryCall(ExecState *exec, Object &thisObj,
const List &args)
00057 {
00058 KJS_CHECK_THIS( KJS::DOMAbstractView, thisObj );
00059
DOM::AbstractView abstractView = static_cast<DOMAbstractView *>(thisObj.imp())->toAbstractView();
00060
switch (
id) {
00061
case DOMAbstractView::GetComputedStyle: {
00062
DOM::Node arg0 = toNode(args[0]);
00063
if (arg0.
nodeType() != DOM::Node::ELEMENT_NODE)
00064
return Undefined();
00065
else
00066
return getDOMCSSStyleDeclaration(exec,abstractView.
getComputedStyle(static_cast<DOM::Element>(arg0),
00067 args[1].toString(exec).string()));
00068 }
00069 }
00070
return Undefined();
00071 }
00072
00073 Value KJS::getDOMAbstractView(ExecState *exec,
DOM::AbstractView av)
00074 {
00075
return cacheDOMObject<DOM::AbstractView, DOMAbstractView>(exec, av);
00076 }
00077
00078
DOM::AbstractView KJS::toAbstractView (
const Value& val)
00079 {
00080 Object obj = Object::dynamicCast(val);
00081
if (obj.isNull() || !obj.inherits(&DOMAbstractView::info))
00082
return DOM::AbstractView ();
00083
00084
const DOMAbstractView *dobj = static_cast<const DOMAbstractView *>(obj.imp());
00085
return dobj->toAbstractView ();
00086 }