From daa8c58ee49795d292312bbf217999c93693919c Mon Sep 17 00:00:00 2001 From: "darin@chromium.org" Date: Mon, 15 Jun 2009 17:21:10 +0000 Subject: Extract form related classes from the guts of WebFrameImpl. Instead of having WebFrameImpl generate SearchableFormData, PasswordForm, and AutofillForm classes, allow the embedder (RenderView) to do so. This is done to help minimize the dependencies WebFrameImpl has on other code, which will make it easier to move WebFrame and WebDataSource into the WebKit API. Most significant change: Now, RenderView always sets a NavigationState on WebDataSource instances. We used to only do so for browser initiated navigations. This is done so that we can store things like SearchableFormData and friends on the NavigationState. To facilitate this change, it was necessary to add a way through the WebKit API to refer to a HTMLFormElement. This CL introduces WebForm, which is like a RefPtr, so you can just copy a WebForm around by value and the right thing happens. Some of the other changes are about moving more things into the webkit_glue namespace. On hindsight, I probably should have done that as a separate CL. BUG=10041 TEST=none R=brettw Review URL: http://codereview.chromium.org/126083 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@18395 0039d316-1c4b-4281-b951-d872f2087c98 --- webkit/api/public/WebForm.h | 75 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 75 insertions(+) create mode 100644 webkit/api/public/WebForm.h (limited to 'webkit/api/public/WebForm.h') diff --git a/webkit/api/public/WebForm.h b/webkit/api/public/WebForm.h new file mode 100644 index 0000000..fe2e168 --- /dev/null +++ b/webkit/api/public/WebForm.h @@ -0,0 +1,75 @@ +/* + * Copyright (C) 2009 Google Inc. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following disclaimer + * in the documentation and/or other materials provided with the + * distribution. + * * Neither the name of Google Inc. nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef WebForm_h +#define WebForm_h + +#include "WebCommon.h" + +#if WEBKIT_IMPLEMENTATION +namespace WebCore { class HTMLFormElement; } +namespace WTF { template class PassRefPtr; } +#endif + +namespace WebKit { + class WebFormPrivate; + + // A container for passing around a reference to a form element. Provides + // some information about the form. + class WebForm { + public: + ~WebForm() { reset(); } + + WebForm() : m_private(0) { } + WebForm(const WebForm& f) : m_private(0) { assign(f); } + WebForm& operator=(const WebForm& f) { assign(f); return *this; } + + WEBKIT_API void reset(); + WEBKIT_API void assign(const WebForm&); + + bool isNull() const { return m_private == 0; } + + // Returns true if the form does not have "autocomplete=off" specified. + WEBKIT_API bool isAutoCompleteEnabled() const; + +#if WEBKIT_IMPLEMENTATION + WebForm(const WTF::PassRefPtr&); + WebForm& operator=(const WTF::PassRefPtr&); + operator WTF::PassRefPtr() const; +#endif + + private: + void assign(WebFormPrivate*); + WebFormPrivate* m_private; + }; + +} // namespace WebKit + +#endif -- cgit v1.1