Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(106)

Unified Diff: third_party/WebKit/WebCore/wml/WMLGoElement.cpp

Issue 21165: Revert the merge. Mac build is mysteriously broken. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Created 11 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/WebCore/wml/WMLGoElement.cpp
===================================================================
--- third_party/WebKit/WebCore/wml/WMLGoElement.cpp (revision 9383)
+++ third_party/WebKit/WebCore/wml/WMLGoElement.cpp (working copy)
@@ -1,214 +1,214 @@
-/**
- * Copyright (C) 2008 Torch Mobile Inc. All rights reserved. (http://www.torchmobile.com/)
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library 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
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public License
- * along with this library; see the file COPYING.LIB. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- *
- */
-
-#include "config.h"
-
-#if ENABLE(WML)
-#include "WMLGoElement.h"
-
-#include "CString.h"
-#include "FormData.h"
-#include "Frame.h"
-#include "FrameLoader.h"
-#include "HTMLNames.h"
-#include "ResourceRequest.h"
-#include "TextEncoding.h"
-#include "WMLCardElement.h"
-#include "WMLDocument.h"
-#include "WMLNames.h"
-#include "WMLPageState.h"
-#include "WMLPostfieldElement.h"
-#include "WMLTimerElement.h"
-#include "WMLVariables.h"
-
-namespace WebCore {
-
-using namespace WMLNames;
-
-WMLGoElement::WMLGoElement(const QualifiedName& tagName, Document* doc)
- : WMLTaskElement(tagName, doc)
-{
-}
-
-void WMLGoElement::registerPostfieldElement(WMLPostfieldElement* postfield)
-{
- m_postfieldElements.append(postfield);
-}
-
-void WMLGoElement::parseMappedAttribute(MappedAttribute* attr)
-{
- if (attr->name() == HTMLNames::methodAttr)
- m_formDataBuilder.parseMethodType(attr->value());
- else if (attr->name() == HTMLNames::enctypeAttr)
- m_formDataBuilder.parseEncodingType(parseValueSubstitutingVariableReferences(attr->value()));
- else if (attr->name() == HTMLNames::accept_charsetAttr)
- m_formDataBuilder.setAcceptCharset(parseValueForbiddingVariableReferences(attr->value()));
- else
- WMLTaskElement::parseMappedAttribute(attr);
-}
-
-void WMLGoElement::executeTask(Event* event)
-{
- Document* doc = document();
- WMLPageState* pageState = wmlPageStateForDocument(doc);
- if (!pageState)
- return;
-
- WMLCardElement* card = pageState->activeCard();
- if (!card)
- return;
-
- Frame* frame = doc->frame();
- if (!frame)
- return;
-
- FrameLoader* loader = frame->loader();
- if (!loader)
- return;
-
- String href = getAttribute(HTMLNames::hrefAttr);
- if (href.isEmpty())
- return;
-
- // Substitute variables within target url attribute value
- KURL url = doc->completeURL(substituteVariableReferences(href, doc, WMLVariableEscapingEscape));
- if (url.isEmpty())
- return;
-
- storeVariableState(pageState);
-
- // Stop the timer of the current card if it is active
- if (WMLTimerElement* eventTimer = card->eventTimer())
- eventTimer->stop();
-
- // FIXME: 'newcontext' handling not implemented for external cards
- bool inSameDeck = doc->url().path() == url.path();
- if (inSameDeck && url.hasRef()) {
- // Force frame loader to load the URL with fragment identifier
- loader->setForceReloadWmlDeck(true);
-
- if (WMLCardElement* card = WMLCardElement::findNamedCardInDocument(doc, url.ref())) {
- if (card->isNewContext())
- pageState->reset();
- }
- }
-
- // Prepare loading the destination url
- ResourceRequest request(url);
-
- if (getAttribute(sendrefererAttr) == "true")
- request.setHTTPReferrer(loader->outgoingReferrer());
-
- String cacheControl = getAttribute(cache_controlAttr);
-
- if (m_formDataBuilder.isPostMethod())
- preparePOSTRequest(request, inSameDeck, cacheControl);
- else
- prepareGETRequest(request, url);
-
- // Set HTTP cache-control header if needed
- if (!cacheControl.isEmpty()) {
- request.setHTTPHeaderField("cache-control", cacheControl);
-
- if (cacheControl == "no-cache")
- request.setCachePolicy(ReloadIgnoringCacheData);
- }
-
- loader->load(request, false);
-}
-
-void WMLGoElement::preparePOSTRequest(ResourceRequest& request, bool inSameDeck, const String& cacheControl)
-{
- request.setHTTPMethod("POST");
-
- if (inSameDeck && cacheControl != "no-cache") {
- request.setCachePolicy(ReturnCacheDataDontLoad);
- return;
- }
-
- RefPtr<FormData> data;
-
- if (m_formDataBuilder.isMultiPartForm()) { // multipart/form-data
- Vector<char> boundary = m_formDataBuilder.generateUniqueBoundaryString();
- data = createFormData(boundary.data());
- request.setHTTPContentType(m_formDataBuilder.encodingType() + "; boundary=" + boundary.data());
- } else {
- // text/plain or application/x-www-form-urlencoded
- data = createFormData(CString());
- request.setHTTPContentType(m_formDataBuilder.encodingType());
- }
-
- request.setHTTPBody(data.get());
-}
-
-void WMLGoElement::prepareGETRequest(ResourceRequest& request, const KURL& url)
-{
- request.setHTTPMethod("GET");
-
- // Eventually display error message?
- if (m_formDataBuilder.isMultiPartForm())
- return;
-
- RefPtr<FormData> data = createFormData(CString());
-
- KURL remoteURL(url);
- remoteURL.setQuery(data->flattenToString());
- request.setURL(remoteURL);
-}
-
-PassRefPtr<FormData> WMLGoElement::createFormData(const CString& boundary)
-{
- CString key;
- CString value;
-
- Vector<char> encodedData;
- TextEncoding encoding = m_formDataBuilder.dataEncoding(document()).encodingForFormSubmission();
-
- Vector<WMLPostfieldElement*>::iterator it = m_postfieldElements.begin();
- Vector<WMLPostfieldElement*>::iterator end = m_postfieldElements.end();
-
- RefPtr<FormData> result = FormData::create();
- for (; it != end; ++it) {
- (*it)->encodeData(encoding, key, value);
-
- if (m_formDataBuilder.isMultiPartForm()) {
- Vector<char> header;
- m_formDataBuilder.beginMultiPartHeader(header, boundary, key);
- m_formDataBuilder.finishMultiPartHeader(header);
- result->appendData(header.data(), header.size());
-
- if (size_t dataSize = value.length())
- result->appendData(value.data(), dataSize);
-
- result->appendData("\r\n", 2);
- } else
- m_formDataBuilder.addKeyValuePairAsFormData(encodedData, key, value);
- }
-
- if (m_formDataBuilder.isMultiPartForm())
- m_formDataBuilder.addBoundaryToMultiPartHeader(encodedData, boundary, true);
-
- result->appendData(encodedData.data(), encodedData.size());
- return result;
-}
-
-}
-
-#endif
+/**
+ * Copyright (C) 2008 Torch Mobile Inc. All rights reserved. (http://www.torchmobile.com/)
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library 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
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ */
+
+#include "config.h"
+
+#if ENABLE(WML)
+#include "WMLGoElement.h"
+
+#include "CString.h"
+#include "FormData.h"
+#include "Frame.h"
+#include "FrameLoader.h"
+#include "HTMLNames.h"
+#include "ResourceRequest.h"
+#include "TextEncoding.h"
+#include "WMLCardElement.h"
+#include "WMLDocument.h"
+#include "WMLNames.h"
+#include "WMLPageState.h"
+#include "WMLPostfieldElement.h"
+#include "WMLTimerElement.h"
+#include "WMLVariables.h"
+
+namespace WebCore {
+
+using namespace WMLNames;
+
+WMLGoElement::WMLGoElement(const QualifiedName& tagName, Document* doc)
+ : WMLTaskElement(tagName, doc)
+{
+}
+
+void WMLGoElement::registerPostfieldElement(WMLPostfieldElement* postfield)
+{
+ m_postfieldElements.append(postfield);
+}
+
+void WMLGoElement::parseMappedAttribute(MappedAttribute* attr)
+{
+ if (attr->name() == HTMLNames::methodAttr)
+ m_formDataBuilder.parseMethodType(attr->value());
+ else if (attr->name() == HTMLNames::enctypeAttr)
+ m_formDataBuilder.parseEncodingType(parseValueSubstitutingVariableReferences(attr->value()));
+ else if (attr->name() == HTMLNames::accept_charsetAttr)
+ m_formDataBuilder.setAcceptCharset(parseValueForbiddingVariableReferences(attr->value()));
+ else
+ WMLTaskElement::parseMappedAttribute(attr);
+}
+
+void WMLGoElement::executeTask(Event* event)
+{
+ Document* doc = document();
+ WMLPageState* pageState = wmlPageStateForDocument(doc);
+ if (!pageState)
+ return;
+
+ WMLCardElement* card = pageState->activeCard();
+ if (!card)
+ return;
+
+ Frame* frame = doc->frame();
+ if (!frame)
+ return;
+
+ FrameLoader* loader = frame->loader();
+ if (!loader)
+ return;
+
+ String href = getAttribute(HTMLNames::hrefAttr);
+ if (href.isEmpty())
+ return;
+
+ // Substitute variables within target url attribute value
+ KURL url = doc->completeURL(substituteVariableReferences(href, doc, WMLVariableEscapingEscape));
+ if (url.isEmpty())
+ return;
+
+ storeVariableState(pageState);
+
+ // Stop the timer of the current card if it is active
+ if (WMLTimerElement* eventTimer = card->eventTimer())
+ eventTimer->stop();
+
+ // FIXME: 'newcontext' handling not implemented for external cards
+ bool inSameDeck = doc->url().path() == url.path();
+ if (inSameDeck && url.hasRef()) {
+ // Force frame loader to load the URL with fragment identifier
+ loader->setForceReloadWmlDeck(true);
+
+ if (WMLCardElement* card = WMLCardElement::findNamedCardInDocument(doc, url.ref())) {
+ if (card->isNewContext())
+ pageState->reset();
+ }
+ }
+
+ // Prepare loading the destination url
+ ResourceRequest request(url);
+
+ if (getAttribute(sendrefererAttr) == "true")
+ request.setHTTPReferrer(loader->outgoingReferrer());
+
+ String cacheControl = getAttribute(cache_controlAttr);
+
+ if (m_formDataBuilder.isPostMethod())
+ preparePOSTRequest(request, inSameDeck, cacheControl);
+ else
+ prepareGETRequest(request, url);
+
+ // Set HTTP cache-control header if needed
+ if (!cacheControl.isEmpty()) {
+ request.setHTTPHeaderField("cache-control", cacheControl);
+
+ if (cacheControl == "no-cache")
+ request.setCachePolicy(ReloadIgnoringCacheData);
+ }
+
+ loader->load(request);
+}
+
+void WMLGoElement::preparePOSTRequest(ResourceRequest& request, bool inSameDeck, const String& cacheControl)
+{
+ request.setHTTPMethod("POST");
+
+ if (inSameDeck && cacheControl != "no-cache") {
+ request.setCachePolicy(ReturnCacheDataDontLoad);
+ return;
+ }
+
+ RefPtr<FormData> data;
+
+ if (m_formDataBuilder.isMultiPartForm()) { // multipart/form-data
+ Vector<char> boundary = m_formDataBuilder.generateUniqueBoundaryString();
+ data = createFormData(boundary.data());
+ request.setHTTPContentType(m_formDataBuilder.encodingType() + "; boundary=" + boundary.data());
+ } else {
+ // text/plain or application/x-www-form-urlencoded
+ data = createFormData(CString());
+ request.setHTTPContentType(m_formDataBuilder.encodingType());
+ }
+
+ request.setHTTPBody(data.get());
+}
+
+void WMLGoElement::prepareGETRequest(ResourceRequest& request, const KURL& url)
+{
+ request.setHTTPMethod("GET");
+
+ // Eventually display error message?
+ if (m_formDataBuilder.isMultiPartForm())
+ return;
+
+ RefPtr<FormData> data = createFormData(CString());
+
+ KURL remoteURL(url);
+ remoteURL.setQuery(data->flattenToString());
+ request.setURL(remoteURL);
+}
+
+PassRefPtr<FormData> WMLGoElement::createFormData(const CString& boundary)
+{
+ CString key;
+ CString value;
+
+ Vector<char> encodedData;
+ TextEncoding encoding = m_formDataBuilder.dataEncoding(document()).encodingForFormSubmission();
+
+ Vector<WMLPostfieldElement*>::iterator it = m_postfieldElements.begin();
+ Vector<WMLPostfieldElement*>::iterator end = m_postfieldElements.end();
+
+ RefPtr<FormData> result = FormData::create();
+ for (; it != end; ++it) {
+ (*it)->encodeData(encoding, key, value);
+
+ if (m_formDataBuilder.isMultiPartForm()) {
+ Vector<char> header;
+ m_formDataBuilder.beginMultiPartHeader(header, boundary, key);
+ m_formDataBuilder.finishMultiPartHeader(header);
+ result->appendData(header.data(), header.size());
+
+ if (size_t dataSize = value.length())
+ result->appendData(value.data(), dataSize);
+
+ result->appendData("\r\n", 2);
+ } else
+ m_formDataBuilder.addKeyValuePairAsFormData(encodedData, key, value);
+ }
+
+ if (m_formDataBuilder.isMultiPartForm())
+ m_formDataBuilder.addBoundaryToMultiPartHeader(encodedData, boundary, true);
+
+ result->appendData(encodedData.data(), encodedData.size());
+ return result;
+}
+
+}
+
+#endif
« no previous file with comments | « third_party/WebKit/WebCore/svg/SVGElementInstance.h ('k') | third_party/WebKit/WebCore/xml/XPathExpression.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698