Skip to content

Commit

Permalink
Changes for upstreaming V8DocumentLocationCustom.cpp.
Browse files Browse the repository at this point in the history
BUG=http://bugs.chromium.org/11467
TEST=Verify that Document.location works from javascript.

Review URL: http://codereview.chromium.org/108024

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@15411 0039d316-1c4b-4281-b951-d872f2087c98
  • Loading branch information
levin@chromium.org committed May 6, 2009
1 parent 114ed79 commit 91c1719
Show file tree
Hide file tree
Showing 4 changed files with 63 additions and 23 deletions.
4 changes: 4 additions & 0 deletions webkit/build/V8Bindings/V8Bindings.vcproj
Original file line number Diff line number Diff line change
Expand Up @@ -3052,6 +3052,10 @@
RelativePath="..\..\..\third_party\WebKit\WebCore\bindings\v8\V8Collection.h"
>
</File>
<File
RelativePath="..\..\port\bindings\v8\V8DocumentLocationCustom.cpp"
>
</File>
<File
RelativePath="..\..\..\third_party\WebKit\WebCore\bindings\v8\V8DOMMap.cpp"
>
Expand Down
56 changes: 56 additions & 0 deletions webkit/port/bindings/v8/V8DocumentLocationCustom.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
/*
* Copyright (C) 2000 Harri Porten (porten@kde.org)
* Copyright (C) 2001 Peter Kelly (pmk@post.com)
* Copyright (C) 2004, 2005, 2006 Apple Computer, Inc.
* Copyright (C) 2006 James G. Speth (speth@end.com)
* Copyright (C) 2006 Samuel Weinig (sam@webkit.org)
* Copyright (C) 2007, 2008, 2009 Google Inc. All Rights Reserved.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/

#include "config.h"
#include "V8CustomBinding.h"

#include "DOMWindow.h"
#include "Frame.h"
#include "V8Binding.h"
#include "V8Document.h"
#include "V8Proxy.h"

namespace WebCore {

ACCESSOR_GETTER(DocumentLocation)
{
Document* document = V8Proxy::DOMWrapperToNative<Document>(info.Holder());
if (!document->frame())
return v8::Null();

DOMWindow* window = document->frame()->domWindow();
return V8Proxy::ToV8Object(V8ClassIndex::LOCATION, window->location());
}

ACCESSOR_SETTER(DocumentLocation)
{
Document* document = V8Proxy::DOMWrapperToNative<Document>(info.Holder());
if (!document->frame())
return;

DOMWindow* window = document->frame()->domWindow();
// WindowSetLocation does security checks. // XXXMB- verify!
WindowSetLocation(window, toWebCoreString(value));
}

} // namespace WebCore
25 changes: 2 additions & 23 deletions webkit/port/bindings/v8/v8_custom.cpp
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
/*
* Copyright (C) 2000 Harri Porten (porten@kde.org)
* Copyright (C) 2001 Peter Kelly (pmk@post.com)
* Copyright (C) 2004-2006 Apple Computer, Inc.
* Copyright (C) 2004, 2005, 2006 Apple Computer, Inc.
* Copyright (C) 2006 James G. Speth (speth@end.com)
* Copyright (C) 2006 Samuel Weinig (sam@webkit.org)
* Copyright 2007, 2008 Google Inc. All Rights Reserved.
* Copyright (C) 2007, 2008 Google Inc. All Rights Reserved.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
Expand Down Expand Up @@ -157,27 +157,6 @@ ACCESSOR_GETTER(DocumentImplementation) {
}


ACCESSOR_GETTER(DocumentLocation) {
Document* imp = V8Proxy::DOMWrapperToNative<Document>(info.Holder());
if (!imp->frame())
return v8::Null();

DOMWindow* window = imp->frame()->domWindow();
return V8Proxy::ToV8Object(V8ClassIndex::LOCATION, window->location());
}


ACCESSOR_SETTER(DocumentLocation) {
Document* imp = V8Proxy::DOMWrapperToNative<Document>(info.Holder());
if (!imp->frame())
return;

DOMWindow* window = imp->frame()->domWindow();
// WindowSetLocation does security checks. // XXXMB- verify!
WindowSetLocation(window, ToWebCoreString(value));
}


INDEXED_PROPERTY_GETTER(HTMLFormElement) {
INC_STATS("DOM.HTMLFormElement.IndexedPropertyGetter");
HTMLFormElement* form =
Expand Down
1 change: 1 addition & 0 deletions webkit/webkit.gyp
Original file line number Diff line number Diff line change
Expand Up @@ -1115,6 +1115,7 @@
'port/bindings/v8/ScriptController.cpp',
'port/bindings/v8/ScriptController.h',
'port/bindings/v8/V8CanvasPixelArrayCustom.cpp',
'port/bindings/v8/V8DocumentLocationCustom.cpp',
'port/bindings/v8/V8MessagePortCustom.cpp',
'port/bindings/v8/V8SVGPODTypeWrapper.h',
'port/bindings/v8/dom_wrapper_map.h',
Expand Down

0 comments on commit 91c1719

Please sign in to comment.