Title: [123568] trunk/Source/WebCore
Revision
123568
Author
[email protected]
Date
2012-07-24 19:35:01 -0700 (Tue, 24 Jul 2012)

Log Message

Move PagePopupClient helper functions so they can be shared
https://bugs.webkit.org/show_bug.cgi?id=92096

Reviewed by Kent Tamura.

Move PagePopupClient helper functions to a separate file,
so they can be shared with new PagePopupClients.

No new tests. Covered by fast/forms/date/calendar-picker-appearance.html

* WebCore.gypi: Added PagePopupClient.cpp
* html/shadow/CalendarPickerElement.cpp:
(WebCore::CalendarPickerElement::writeDocument): Modified to use PagePopupClient.
* page/PagePopupClient.cpp: Added.
(WebCore):
(WebCore::PagePopupClient::addJavaScriptString):
(WebCore::PagePopupClient::addProperty):
* page/PagePopupClient.h:
(WebCore::PagePopupClient::addString):

Modified Paths

Added Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (123567 => 123568)


--- trunk/Source/WebCore/ChangeLog	2012-07-25 02:31:27 UTC (rev 123567)
+++ trunk/Source/WebCore/ChangeLog	2012-07-25 02:35:01 UTC (rev 123568)
@@ -1,3 +1,25 @@
+2012-07-24  Keishi Hattori  <[email protected]>
+
+        Move PagePopupClient helper functions so they can be shared
+        https://bugs.webkit.org/show_bug.cgi?id=92096
+
+        Reviewed by Kent Tamura.
+
+        Move PagePopupClient helper functions to a separate file,
+        so they can be shared with new PagePopupClients.
+
+        No new tests. Covered by fast/forms/date/calendar-picker-appearance.html
+
+        * WebCore.gypi: Added PagePopupClient.cpp
+        * html/shadow/CalendarPickerElement.cpp:
+        (WebCore::CalendarPickerElement::writeDocument): Modified to use PagePopupClient.
+        * page/PagePopupClient.cpp: Added.
+        (WebCore):
+        (WebCore::PagePopupClient::addJavaScriptString):
+        (WebCore::PagePopupClient::addProperty):
+        * page/PagePopupClient.h:
+        (WebCore::PagePopupClient::addString):
+
 2012-07-24  Jer Noble  <[email protected]>
 
         setting playbackRate on a MediaController doesn't change the playbackRate for slaved media

Modified: trunk/Source/WebCore/WebCore.gypi (123567 => 123568)


--- trunk/Source/WebCore/WebCore.gypi	2012-07-25 02:31:27 UTC (rev 123567)
+++ trunk/Source/WebCore/WebCore.gypi	2012-07-25 02:35:01 UTC (rev 123568)
@@ -243,7 +243,6 @@
             'page/Page.h',
             'page/PageGroup.h',
             'page/PagePopup.h',
-            'page/PagePopupClient.h',
             'page/PagePopupDriver.h',
             'page/PageSerializer.h',
             'page/PageVisibilityState.h',
@@ -3090,6 +3089,8 @@
             'page/PageGroupLoadDeferrer.h',
             'page/PagePopupController.cpp',
             'page/PagePopupController.h',
+            'page/PagePopupClient.cpp',
+            'page/PagePopupClient.h',
             'page/PageSerializer.cpp',
             'page/PageVisibilityState.cpp',
             'page/Performance.cpp',

Modified: trunk/Source/WebCore/html/shadow/CalendarPickerElement.cpp (123567 => 123568)


--- trunk/Source/WebCore/html/shadow/CalendarPickerElement.cpp	2012-07-25 02:31:27 UTC (rev 123567)
+++ trunk/Source/WebCore/html/shadow/CalendarPickerElement.cpp	2012-07-25 02:35:01 UTC (rev 123568)
@@ -37,7 +37,6 @@
 #include "Chrome.h"
 #include "ChromeClient.h"
 #include "DateComponents.h"
-#include "DocumentWriter.h"
 #include "Event.h"
 #include "FrameView.h"
 #include "HTMLInputElement.h"
@@ -143,67 +142,6 @@
     return IntSize(100, 100);
 }
 
-#define addLiteral(literal, writer)    writer.addData(literal, sizeof(literal) - 1)
-
-static inline void addString(const String& str, DocumentWriter& writer)
-{
-    CString str8 = str.utf8();
-    writer.addData(str8.data(), str8.length());
-}
-
-static void addJavaScriptString(const String& str, DocumentWriter& writer)
-{
-    addLiteral("\"", writer);
-    StringBuilder builder;
-    builder.reserveCapacity(str.length());
-    for (unsigned i = 0; i < str.length(); ++i) {
-        if (str[i] == '\\' || str[i] == '"')
-            builder.append('\\');
-        builder.append(str[i]);
-    }
-    addString(builder.toString(), writer);
-    addLiteral("\"", writer);
-}
-
-static void addProperty(const char* name, const String& value, DocumentWriter& writer)
-{
-    writer.addData(name, strlen(name));
-    addLiteral(": ", writer);
-    addJavaScriptString(value, writer);
-    addLiteral(",\n", writer);
-}
-
-static void addProperty(const char* name, unsigned value, DocumentWriter& writer)
-{
-    writer.addData(name, strlen(name));
-    addLiteral(": ", writer);
-    addString(String::number(value), writer);
-    addLiteral(",\n", writer);
-}
-
-static void addProperty(const char* name, bool value, DocumentWriter& writer)
-{
-    writer.addData(name, strlen(name));
-    addLiteral(": ", writer);
-    if (value)
-        addLiteral("true", writer);
-    else
-        addLiteral("false", writer);
-    addLiteral(",\n", writer);
-}
-
-static void addProperty(const char* name, const Vector<String>& values, DocumentWriter& writer)
-{
-    writer.addData(name, strlen(name));
-    addLiteral(": [", writer);
-    for (unsigned i = 0; i < values.size(); ++i) {
-        if (i)
-            addLiteral(",", writer);
-        addJavaScriptString(values[i], writer);
-    }
-    addLiteral("],\n", writer);
-}
-
 void CalendarPickerElement::writeDocument(DocumentWriter& writer)
 {
     HTMLInputElement* input = hostInput();
@@ -217,14 +155,14 @@
     if (stepString.isEmpty() || !input->getAllowedValueStep(&step))
         stepString = "1";
 
-    addLiteral("<!DOCTYPE html><head><meta charset='UTF-8'><style>\n", writer);
+    addString("<!DOCTYPE html><head><meta charset='UTF-8'><style>\n", writer);
     writer.addData(calendarPickerCss, sizeof(calendarPickerCss));
     if (document()->page()) {
         CString extraStyle = document()->page()->theme()->extraCalendarPickerStyleSheet();
         if (extraStyle.length())
             writer.addData(extraStyle.data(), extraStyle.length());
     }
-    addLiteral("</style></head><body><div id=main>Loading...</div><script>\n"
+    addString("</style></head><body><div id=main>Loading...</div><script>\n"
                "window.dialogArguments = {\n", writer);
     addProperty("min", minString, writer);
     addProperty("max", maxString, writer);
@@ -239,10 +177,10 @@
     addProperty("dayLabels", weekDayShortLabels(), writer);
     Direction dir = direction(monthLabels()[0][0]);
     addProperty("isRTL", dir == RightToLeft || dir == RightToLeftArabic, writer);
-    addLiteral("}\n", writer);
+    addString("}\n", writer);
 
     writer.addData(calendarPickerJs, sizeof(calendarPickerJs));
-    addLiteral("</script></body>\n", writer);
+    addString("</script></body>\n", writer);
 }
 
 void CalendarPickerElement::setValueAndClosePopup(int numValue, const String& stringValue)

Added: trunk/Source/WebCore/page/PagePopupClient.cpp (0 => 123568)


--- trunk/Source/WebCore/page/PagePopupClient.cpp	                        (rev 0)
+++ trunk/Source/WebCore/page/PagePopupClient.cpp	2012-07-25 02:35:01 UTC (rev 123568)
@@ -0,0 +1,97 @@
+/*
+ * Copyright (C) 2012 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.
+ */
+
+#include "config.h"
+#include "PagePopupClient.h"
+
+#if ENABLE(PAGE_POPUP)
+
+#include <wtf/text/StringBuilder.h>
+
+namespace WebCore {
+
+#define addLiteral(literal, writer)    writer.addData(literal, sizeof(literal) - 1)
+
+void PagePopupClient::addJavaScriptString(const String& str, DocumentWriter& writer)
+{
+    addLiteral("\"", writer);
+    StringBuilder builder;
+    builder.reserveCapacity(str.length());
+    for (unsigned i = 0; i < str.length(); ++i) {
+        if (str[i] == '\\' || str[i] == '"')
+            builder.append('\\');
+        builder.append(str[i]);
+    }
+    addString(builder.toString(), writer);
+    addLiteral("\"", writer);
+}
+
+void PagePopupClient::addProperty(const char* name, const String& value, DocumentWriter& writer)
+{
+    writer.addData(name, strlen(name));
+    addLiteral(": ", writer);
+    addJavaScriptString(value, writer);
+    addLiteral(",\n", writer);
+}
+
+void PagePopupClient::addProperty(const char* name, unsigned value, DocumentWriter& writer)
+{
+    writer.addData(name, strlen(name));
+    addLiteral(": ", writer);
+    addString(String::number(value), writer);
+    addLiteral(",\n", writer);
+}
+
+void PagePopupClient::addProperty(const char* name, bool value, DocumentWriter& writer)
+{
+    writer.addData(name, strlen(name));
+    addLiteral(": ", writer);
+    if (value)
+        addLiteral("true", writer);
+    else
+        addLiteral("false", writer);
+    addLiteral(",\n", writer);
+}
+
+void PagePopupClient::addProperty(const char* name, const Vector<String>& values, DocumentWriter& writer)
+{
+    writer.addData(name, strlen(name));
+    addLiteral(": [", writer);
+    for (unsigned i = 0; i < values.size(); ++i) {
+        if (i)
+            addLiteral(",", writer);
+        addJavaScriptString(values[i], writer);
+    }
+    addLiteral("],\n", writer);
+}
+
+} // namespace WebCore
+
+#endif // ENABLE(PAGE_POPUP)

Modified: trunk/Source/WebCore/page/PagePopupClient.h (123567 => 123568)


--- trunk/Source/WebCore/page/PagePopupClient.h	2012-07-25 02:31:27 UTC (rev 123567)
+++ trunk/Source/WebCore/page/PagePopupClient.h	2012-07-25 02:35:01 UTC (rev 123568)
@@ -33,6 +33,7 @@
 
 #if ENABLE(PAGE_POPUP)
 
+#include "DocumentWriter.h"
 #include "IntSize.h"
 #include <wtf/text/WTFString.h>
 
@@ -59,8 +60,22 @@
     virtual void didClosePopup() = 0;
 
     virtual ~PagePopupClient() { }
+
+    // Helper functions to be used in PagePopupClient::writeDocument().
+    static void addString(const String&, DocumentWriter&);
+    static void addJavaScriptString(const String&, DocumentWriter&);
+    static void addProperty(const char* name, const String& value, DocumentWriter&);
+    static void addProperty(const char* name, unsigned value, DocumentWriter&);
+    static void addProperty(const char* name, bool value, DocumentWriter&);
+    static void addProperty(const char* name, const Vector<String>& values, DocumentWriter&);
 };
 
+inline void PagePopupClient::addString(const String& str, DocumentWriter& writer)
+{
+    CString str8 = str.utf8();
+    writer.addData(str8.data(), str8.length());
 }
+
+}
 #endif
 #endif
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to