Diff
Modified: trunk/Source/WebKit/chromium/ChangeLog (135196 => 135197)
--- trunk/Source/WebKit/chromium/ChangeLog 2012-11-19 22:20:08 UTC (rev 135196)
+++ trunk/Source/WebKit/chromium/ChangeLog 2012-11-19 22:22:34 UTC (rev 135197)
@@ -1,3 +1,25 @@
+2012-11-19 Miguel Garcia <[email protected]>
+
+ [Chromium] Remove the dependency of INPUT_TYPE_COLOR on PAGE_POPUP
+ https://bugs.webkit.org/show_bug.cgi?id=102525
+
+ Reviewed by Kent Tamura.
+
+ INPUT_TYPE_COLOR should not depend on PAGE_POPUP, with this change we allow platforms like android to implement the former without depending on the latter.
+
+ Tested by compiling chromium with and without ENABLE_PAGE_POPUP and made sure that forms with input type color would load in both cases.
+
+ * WebKit.gyp:
+ * src/ChromeClientImpl.cpp:
+ (WebKit::ChromeClientImpl::createColorChooser):
+ * src/ColorChooserUIController.cpp:
+ (WebKit::ColorChooserUIController::ColorChooserUIController):
+ (WebKit::ColorChooserUIController::openUI):
+ (WebKit):
+ (WebKit::ColorChooserUIController::endChooser):
+ * src/ColorChooserUIController.h:
+ (ColorChooserUIController):
+
2012-11-19 Alpha Lam <[email protected]>
[chromium] Lazy image decoding without cache
Modified: trunk/Source/WebKit/chromium/WebKit.gyp (135196 => 135197)
--- trunk/Source/WebKit/chromium/WebKit.gyp 2012-11-19 22:20:08 UTC (rev 135196)
+++ trunk/Source/WebKit/chromium/WebKit.gyp 2012-11-19 22:22:34 UTC (rev 135197)
@@ -362,6 +362,8 @@
'src/DateTimeChooserImpl.h',
'src/ChromeClientImpl.cpp',
'src/ChromeClientImpl.h',
+ 'src/ColorChooserPopupUIController.cpp',
+ 'src/ColorChooserPopupUIController.h',
'src/ColorChooserUIController.cpp',
'src/ColorChooserUIController.h',
'src/CompositionUnderlineBuilder.h',
Modified: trunk/Source/WebKit/chromium/src/ChromeClientImpl.cpp (135196 => 135197)
--- trunk/Source/WebKit/chromium/src/ChromeClientImpl.cpp 2012-11-19 22:20:08 UTC (rev 135196)
+++ trunk/Source/WebKit/chromium/src/ChromeClientImpl.cpp 2012-11-19 22:22:34 UTC (rev 135197)
@@ -37,8 +37,12 @@
#if ENABLE(INPUT_TYPE_COLOR)
#include "ColorChooser.h"
#include "ColorChooserClient.h"
+#if ENABLE(PAGE_POPUP)
+#include "ColorChooserPopupUIController.h"
+#else
#include "ColorChooserUIController.h"
#endif
+#endif
#include "Console.h"
#include "Cursor.h"
#include "DatabaseTracker.h"
@@ -677,7 +681,14 @@
#if ENABLE(INPUT_TYPE_COLOR)
PassOwnPtr<ColorChooser> ChromeClientImpl::createColorChooser(ColorChooserClient* chooserClient, const Color&)
{
- return adoptPtr(new ColorChooserUIController(this, chooserClient));
+ OwnPtr<ColorChooserUIController> controller;
+#if ENABLE(PAGE_POPUP)
+ controller = adoptPtr(new ColorChooserPopupUIController(this, chooserClient));
+#else
+ controller = adoptPtr(new ColorChooserUIController(this, chooserClient));
+#endif
+ controller->openUI();
+ return controller.release();
}
PassOwnPtr<WebColorChooser> ChromeClientImpl::createWebColorChooser(WebColorChooserClient* chooserClient, const WebColor& initialColor)
{
Copied: trunk/Source/WebKit/chromium/src/ColorChooserPopupUIController.cpp (from rev 135196, trunk/Source/WebKit/chromium/src/ColorChooserUIController.cpp) (0 => 135197)
--- trunk/Source/WebKit/chromium/src/ColorChooserPopupUIController.cpp (rev 0)
+++ trunk/Source/WebKit/chromium/src/ColorChooserPopupUIController.cpp 2012-11-19 22:22:34 UTC (rev 135197)
@@ -0,0 +1,157 @@
+/*
+ * 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:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. 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.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS 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 APPLE OR ITS 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 "ColorChooserPopupUIController.h"
+
+#if ENABLE(INPUT_TYPE_COLOR) && ENABLE(PAGE_POPUP)
+#include "ChromeClientImpl.h"
+#include "ColorChooserClient.h"
+#include "ColorSuggestionPicker.h"
+#include "FrameView.h"
+#include "IntRect.h"
+#include "LocalizedStrings.h"
+#include "PickerCommon.h"
+#include "WebColorChooser.h"
+#include "WebViewImpl.h"
+#include <public/Platform.h>
+#include <public/WebLocalizedString.h>
+
+using namespace WebCore;
+
+namespace WebKit {
+
+// Keep in sync with Actions in colorSuggestionPicker.js.
+enum ColorPickerPopupAction {
+ ColorPickerPopupActionChooseOtherColor = -2,
+ ColorPickerPopupActionCancel = -1,
+ ColorPickerPopupActionSetValue = 0
+};
+
+ColorChooserPopupUIController::ColorChooserPopupUIController(ChromeClientImpl* chromeClient, ColorChooserClient* client)
+ : ColorChooserUIController(chromeClient, client)
+ , m_chromeClient(chromeClient)
+ , m_client(client)
+ , m_popup(0)
+ , m_locale(Locale::createDefault())
+{
+}
+
+ColorChooserPopupUIController::~ColorChooserPopupUIController()
+{
+}
+
+void ColorChooserPopupUIController::openUI()
+{
+ if (m_client->shouldShowSuggestions())
+ openPopup();
+ else
+ openColorChooser();
+}
+
+void ColorChooserPopupUIController::endChooser()
+{
+ if (m_chooser)
+ m_chooser->endChooser();
+ if (m_popup)
+ closePopup();
+}
+
+IntSize ColorChooserPopupUIController::contentSize()
+{
+ return IntSize(0, 0);
+}
+
+void ColorChooserPopupUIController::writeDocument(DocumentWriter& writer)
+{
+ Vector<Color> suggestions = m_client->suggestions();
+ Vector<String> suggestionValues;
+ for (unsigned i = 0; i < suggestions.size(); i++)
+ suggestionValues.append(suggestions[i].serialized());
+ IntRect anchorRectInScreen = m_chromeClient->rootViewToScreen(m_client->elementRectRelativeToRootView());
+ FrameView* view = static_cast<WebViewImpl*>(m_chromeClient->webView())->page()->mainFrame()->view();
+ IntRect rootViewVisibleContentRect = view->visibleContentRect(true /* include scrollbars */);
+ IntRect rootViewRectInScreen = m_chromeClient->rootViewToScreen(rootViewVisibleContentRect);
+
+ PagePopupClient::addString("<!DOCTYPE html><head><meta charset='UTF-8'><style>\n", writer);
+ writer.addData(pickerCommonCss, sizeof(pickerCommonCss));
+ writer.addData(colorSuggestionPickerCss, sizeof(colorSuggestionPickerCss));
+ PagePopupClient::addString("</style></head><body><div id=main>Loading...</div><script>\n"
+ "window.dialogArguments = {\n", writer);
+ PagePopupClient::addProperty("values", suggestionValues, writer);
+ PagePopupClient::addProperty("otherColorLabel", Platform::current()->queryLocalizedString(WebLocalizedString::OtherColorLabel), writer);
+ addProperty("anchorRectInScreen", anchorRectInScreen, writer);
+ addProperty("rootViewRectInScreen", rootViewRectInScreen, writer);
+#if OS(MAC_OS_X)
+ addProperty("confineToRootView", true, writer);
+#else
+ addProperty("confineToRootView", false, writer);
+#endif
+ PagePopupClient::addString("};\n", writer);
+ writer.addData(pickerCommonJs, sizeof(pickerCommonJs));
+ writer.addData(colorSuggestionPickerJs, sizeof(colorSuggestionPickerJs));
+ PagePopupClient::addString("</script></body>\n", writer);
+}
+
+Locale& ColorChooserPopupUIController::locale()
+{
+ return *m_locale;
+}
+
+void ColorChooserPopupUIController::setValueAndClosePopup(int numValue, const String& stringValue)
+{
+ ASSERT(m_popup);
+ ASSERT(m_client);
+ if (numValue == ColorPickerPopupActionSetValue)
+ m_client->didChooseColor(Color(stringValue));
+ if (numValue == ColorPickerPopupActionChooseOtherColor)
+ openColorChooser();
+ closePopup();
+}
+
+void ColorChooserPopupUIController::didClosePopup()
+{
+ m_popup = 0;
+
+ if (!m_chooser)
+ didEndChooser();
+}
+
+
+void ColorChooserPopupUIController::openPopup()
+{
+ ASSERT(!m_popup);
+ m_popup = m_chromeClient->openPagePopup(this, m_client->elementRectRelativeToRootView());
+}
+
+void ColorChooserPopupUIController::closePopup()
+{
+ if (!m_popup)
+ return;
+ m_chromeClient->closePagePopup(m_popup);
+}
+
+}
+#endif // ENABLE(INPUT_TYPE_COLOR) && ENABLE(PAGE_POPUP)
Copied: trunk/Source/WebKit/chromium/src/ColorChooserPopupUIController.h (from rev 135196, trunk/Source/WebKit/chromium/src/ColorChooserUIController.h) (0 => 135197)
--- trunk/Source/WebKit/chromium/src/ColorChooserPopupUIController.h (rev 0)
+++ trunk/Source/WebKit/chromium/src/ColorChooserPopupUIController.h 2012-11-19 22:22:34 UTC (rev 135197)
@@ -0,0 +1,72 @@
+/*
+ * Copyright (C) 2011 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:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. 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.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS 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 APPLE OR ITS 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 ColorChooserPopupUIController_h
+#define ColorChooserPopupUIController_h
+
+#if ENABLE(INPUT_TYPE_COLOR) && ENABLE(PAGE_POPUP)
+#include "ColorChooserUIController.h"
+#include "PagePopupClient.h"
+#include <wtf/OwnPtr.h>
+
+namespace WebCore {
+class ColorChooserClient;
+class PagePopup;
+}
+
+namespace WebKit {
+
+class ColorChooserPopupUIController : public ColorChooserUIController, public WebCore::PagePopupClient {
+
+public:
+ ColorChooserPopupUIController(ChromeClientImpl*, WebCore::ColorChooserClient*);
+ virtual ~ColorChooserPopupUIController();
+
+ // ColorChooserUIController functions:
+ virtual void openUI() OVERRIDE;
+
+ // ColorChooser functions
+ void endChooser() OVERRIDE;
+
+ // PagePopupClient functions:
+ virtual WebCore::IntSize contentSize() OVERRIDE;
+ virtual void writeDocument(WebCore::DocumentWriter&) OVERRIDE;
+ virtual WebCore::Locale& locale() OVERRIDE;
+ virtual void setValueAndClosePopup(int, const String&) OVERRIDE;
+ virtual void didClosePopup() OVERRIDE;
+
+private:
+ void openPopup();
+ void closePopup();
+
+ ChromeClientImpl* m_chromeClient;
+ WebCore::ColorChooserClient* m_client;
+ WebCore::PagePopup* m_popup;
+ OwnPtr<WebCore::Locale> m_locale;
+};
+}
+
+#endif // ENABLE(INPUT_TYPE_COLOR) && ENABLE(PAGE_POPUP)
+
+#endif // ColorChooserPopupUIController_h
Modified: trunk/Source/WebKit/chromium/src/ColorChooserUIController.cpp (135196 => 135197)
--- trunk/Source/WebKit/chromium/src/ColorChooserUIController.cpp 2012-11-19 22:20:08 UTC (rev 135196)
+++ trunk/Source/WebKit/chromium/src/ColorChooserUIController.cpp 2012-11-19 22:22:34 UTC (rev 135197)
@@ -27,48 +27,32 @@
#include "ColorChooserUIController.h"
#if ENABLE(INPUT_TYPE_COLOR)
-
#include "ChromeClientImpl.h"
#include "Color.h"
#include "ColorChooserClient.h"
-#include "ColorSuggestionPicker.h"
-#include "FrameView.h"
-#include "IntRect.h"
-#include "LocalizedStrings.h"
-#include "PickerCommon.h"
#include "WebColorChooser.h"
-#include "WebViewImpl.h"
-#include <public/Platform.h>
#include <public/WebColor.h>
-#include <public/WebLocalizedString.h>
using namespace WebCore;
namespace WebKit {
-// Keep in sync with Actions in colorSuggestionPicker.js.
-enum ColorPickerPopupAction {
- ColorPickerPopupActionChooseOtherColor = -2,
- ColorPickerPopupActionCancel = -1,
- ColorPickerPopupActionSetValue = 0
-};
ColorChooserUIController::ColorChooserUIController(ChromeClientImpl* chromeClient, ColorChooserClient* client)
: m_chromeClient(chromeClient)
, m_client(client)
- , m_popup(0)
- , m_locale(Locale::createDefault())
{
- if (m_client->shouldShowSuggestions())
- openPopup();
- else
- openColorChooser();
}
ColorChooserUIController::~ColorChooserUIController()
{
}
+void ColorChooserUIController::openUI()
+{
+ openColorChooser();
+}
+
void ColorChooserUIController::setSelectedColor(const Color& color)
{
ASSERT(m_chooser);
@@ -79,8 +63,6 @@
{
if (m_chooser)
m_chooser->endChooser();
- if (m_popup)
- closePopup();
}
void ColorChooserUIController::didChooseColor(const WebColor& color)
@@ -96,79 +78,6 @@
m_client->didEndChooser();
}
-IntSize ColorChooserUIController::contentSize()
-{
- return IntSize(0, 0);
-}
-
-void ColorChooserUIController::writeDocument(DocumentWriter& writer)
-{
- Vector<Color> suggestions = m_client->suggestions();
- Vector<String> suggestionValues;
- for (unsigned i = 0; i < suggestions.size(); i++)
- suggestionValues.append(suggestions[i].serialized());
- IntRect anchorRectInScreen = m_chromeClient->rootViewToScreen(m_client->elementRectRelativeToRootView());
- FrameView* view = static_cast<WebViewImpl*>(m_chromeClient->webView())->page()->mainFrame()->view();
- IntRect rootViewVisibleContentRect = view->visibleContentRect(true /* include scrollbars */);
- IntRect rootViewRectInScreen = m_chromeClient->rootViewToScreen(rootViewVisibleContentRect);
-
- PagePopupClient::addString("<!DOCTYPE html><head><meta charset='UTF-8'><style>\n", writer);
- writer.addData(pickerCommonCss, sizeof(pickerCommonCss));
- writer.addData(colorSuggestionPickerCss, sizeof(colorSuggestionPickerCss));
- PagePopupClient::addString("</style></head><body><div id=main>Loading...</div><script>\n"
- "window.dialogArguments = {\n", writer);
- PagePopupClient::addProperty("values", suggestionValues, writer);
- PagePopupClient::addProperty("otherColorLabel", Platform::current()->queryLocalizedString(WebLocalizedString::OtherColorLabel), writer);
- addProperty("anchorRectInScreen", anchorRectInScreen, writer);
- addProperty("rootViewRectInScreen", rootViewRectInScreen, writer);
-#if OS(MAC_OS_X)
- addProperty("confineToRootView", true, writer);
-#else
- addProperty("confineToRootView", false, writer);
-#endif
- PagePopupClient::addString("};\n", writer);
- writer.addData(pickerCommonJs, sizeof(pickerCommonJs));
- writer.addData(colorSuggestionPickerJs, sizeof(colorSuggestionPickerJs));
- PagePopupClient::addString("</script></body>\n", writer);
-}
-
-Locale& ColorChooserUIController::locale()
-{
- return *m_locale;
-}
-
-void ColorChooserUIController::setValueAndClosePopup(int numValue, const String& stringValue)
-{
- ASSERT(m_popup);
- ASSERT(m_client);
- if (numValue == ColorPickerPopupActionSetValue)
- m_client->didChooseColor(Color(stringValue));
- if (numValue == ColorPickerPopupActionChooseOtherColor)
- openColorChooser();
- closePopup();
-}
-
-void ColorChooserUIController::didClosePopup()
-{
- m_popup = 0;
-
- if (!m_chooser)
- didEndChooser();
-}
-
-void ColorChooserUIController::openPopup()
-{
- ASSERT(!m_popup);
- m_popup = m_chromeClient->openPagePopup(this, m_client->elementRectRelativeToRootView());
-}
-
-void ColorChooserUIController::closePopup()
-{
- if (!m_popup)
- return;
- m_chromeClient->closePagePopup(m_popup);
-}
-
void ColorChooserUIController::openColorChooser()
{
ASSERT(!m_chooser);
Modified: trunk/Source/WebKit/chromium/src/ColorChooserUIController.h (135196 => 135197)
--- trunk/Source/WebKit/chromium/src/ColorChooserUIController.h 2012-11-19 22:20:08 UTC (rev 135196)
+++ trunk/Source/WebKit/chromium/src/ColorChooserUIController.h 2012-11-19 22:22:34 UTC (rev 135197)
@@ -29,15 +29,12 @@
#if ENABLE(INPUT_TYPE_COLOR)
#include "ColorChooser.h"
-#include "PagePopupClient.h"
#include "PlatformLocale.h"
#include "WebColorChooserClient.h"
#include <wtf/OwnPtr.h>
-#include <wtf/PassOwnPtr.h>
namespace WebCore {
class ColorChooserClient;
-class PagePopup;
}
namespace WebKit {
@@ -45,11 +42,13 @@
class ChromeClientImpl;
class WebColorChooser;
-class ColorChooserUIController : public WebColorChooserClient, public WebCore::ColorChooser, public WebCore::PagePopupClient {
+class ColorChooserUIController : public WebColorChooserClient, public WebCore::ColorChooser {
public:
ColorChooserUIController(ChromeClientImpl*, WebCore::ColorChooserClient*);
virtual ~ColorChooserUIController();
+ virtual void openUI();
+
// ColorChooser functions:
virtual void setSelectedColor(const WebCore::Color&) OVERRIDE;
virtual void endChooser() OVERRIDE;
@@ -58,23 +57,14 @@
virtual void didChooseColor(const WebColor&) OVERRIDE;
virtual void didEndChooser() OVERRIDE;
- // PagePopupClient functions:
- virtual WebCore::IntSize contentSize() OVERRIDE;
- virtual void writeDocument(WebCore::DocumentWriter&) OVERRIDE;
- virtual WebCore::Locale& locale() OVERRIDE;
- virtual void setValueAndClosePopup(int, const String&) OVERRIDE;
- virtual void didClosePopup() OVERRIDE;
+protected:
+ void openColorChooser();
+ OwnPtr<WebColorChooser> m_chooser;
private:
- void openPopup();
- void closePopup();
- void openColorChooser();
ChromeClientImpl* m_chromeClient;
WebCore::ColorChooserClient* m_client;
- OwnPtr<WebColorChooser> m_chooser;
- WebCore::PagePopup* m_popup;
- OwnPtr<WebCore::Locale> m_locale;
};
}