3 Implement <input type=color> UI behavior WebCore part
4 https://bugs.webkit.org/show_bug.cgi?id=62619
5
6 Reviewed by NOBODY (OOPS!).
7
8 * WebCore.exp.in: Added __ZN7WebCore12ColorChooser7chooserEv and
9 __ZNK7WebCore12ColorChooser13colorSelectedERKNS_5ColorE
10 * WebCore.xcodeproj/project.pbxproj: Added ColorChooser.{h,cpp}
11 * html/ColorInputType.cpp:
12 (WebCore::ColorInputType::~ColorInputType): Added. Close color chooser. ex. when type attribute changes.
13 (WebCore::ColorInputType::valueAsColor): Added.
14 (WebCore::ColorInputType::setValueAsColor): Added.
15 (WebCore::ColorInputType::valueChanged): Update selected color in color chooser too.
16 (WebCore::ColorInputType::handleClickEvent): Opens color chooser.
17 (WebCore::ColorInputType::handleDOMActivateEvent): Called when element.click(). Open color chooser only
18 when it was initiated by a user interaction.
19 (WebCore::ColorInputType::detach): Close color chooser. Called when input element or its ancestors have "display:none"
20 or is removed from DOM.
21 (WebCore::ColorInputType::colorSelected): Callback from color chooser.
22 (WebCore::ColorInputType::closeColorChooserIfClientIsInDocument): Close color chooser if element is in
23 document. Called when the page navigates away.
24 (WebCore::ColorInputType::closeColorChooserIfCurrentClient): Close color chooser if this input type is the current client of ColorChooser.
25 * html/ColorInputType.h:
26 * html/FileInputType.cpp:
27 * html/FileInputType.h:
28 * html/HTMLInputElement.cpp:
29 (WebCore::HTMLInputElement::detach): Calls InputType::detach
30 * html/InputType.cpp:
31 (WebCore::InputType::chrome): Added. Used in FileInputType and ColorInputType.
32 (WebCore::InputType::detach): ColorInputType overrides this.
33 * html/InputType.h:
34 * loader/EmptyClients.h:
35 (WebCore::EmptyChromeClient::openColorChooser): Added.
36 (WebCore::EmptyChromeClient::closeColorChooser): Added.
37 (WebCore::EmptyChromeClient::setSelectedColorInColorChooser): Added.
38 * loader/FrameLoader.cpp:
39 (WebCore::FrameLoader::transitionToCommitted): Close color chooser when
40 navigating away from the page.
41 * page/Chrome.cpp:
42 (WebCore::Chrome::openColorChooser): Added. Opens the color chooser.
43 (WebCore::Chrome::closeColorChooser): Added. Tries to close the color chooser. Might not close if the
44 listener of the color chooser is another part of the browser or another render process.
45 (WebCore::Chrome::setSelectedColorInColorChooser): Added. Sets the selected color in the color chooser.
46 Again, might not be executed if the listener of the color chooser is another part of the browser or another render process.
47 * page/Chrome.h:
48 * page/ChromeClient.h:
49 * platform/ColorChooser.cpp: Added.
50 (WebCore::ColorChooserClient::~ColorChooserClient): Disconnects itself from the ColorChooser.
51 (WebCore::ColorChooser::chooser): Get shared instance of ColorChooser.
52 (WebCore::ColorChooser::chooser): Get shared instance of ColorChooser.
53 (WebCore::ColorChooser::connectClient): Connects a ColorChooserClient that receives the colorSelected callbacks.
54 (WebCore::ColorChooser::disconnectClient): Disconnects the connectClient.
55 (WebCore::ColorChooser::closeColorChooserIfClientIsInDocument): Close the color chooser if the client is
56 inside the document.
57 (WebCore::ColorChooser::colorSelected): Called from color chooser listener.
58 * platform/ColorChooser.h: Added.
59 (WebCore::ColorChooser::client): Added. Returns the current connected client.
60 (WebCore::ColorChooser::ColorChooser): Added.
61
622011-08-05 Keishi Hattori <keishi@webkit.org>
63