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