2011-06-03 Dimitri Glazkov <dglazkov@chromium.org>
Reviewed by Darin Adler.
Convert file <input> to use the new shadow DOM model
https://bugs.webkit.org/show_bug.cgi?id=59005
Refactoring, covered by existing tests.
* css/CSSSelector.cpp:
(WebCore::CSSSelector::pseudoId): Removed FILE_UPLOAD_BUTTON pseudoId and all references to it.
(WebCore::nameToPseudoTypeMap): Ditto.
(WebCore::CSSSelector::extractPseudoType): Ditto.
* css/CSSSelector.h: Ditto.
* css/html.css:
(input[type="button"], input[type="submit"], input[type="reset"]): Moved -webkit-file-upload-button to its own rule.
(input[type="file"]::-webkit-file-upload-button): Added and moved all previously hard-coded properties there.
* html/FileInputType.cpp:
(WebCore::UploadButtonElement::create): Added.
(WebCore::UploadButtonElement::UploadButtonElement): Added.
(WebCore::UploadButtonElement::shadowPseudoId): Added.
(WebCore::FileInputType::createShadowSubtree): Added.
* html/FileInputType.h: Added createShadowSubtree decl.
* page/DragController.cpp:
(WebCore::asFileInput): Changed the logic to use new shadow DOM.
* rendering/RenderFileUploadControl.cpp: Removed UploadButton class.
(WebCore::RenderFileUploadControl::~RenderFileUploadControl): Removed initializer for m_button.
(WebCore::RenderFileUploadControl::updateFromElement): Removed attachment logic that's no longer necessary.
(WebCore::nodeWidth): Added a helper.
(WebCore::RenderFileUploadControl::maxFilenameWidth): Changed to use uploadButton and nodeWidth.
(WebCore::RenderFileUploadControl::paintObject): Ditto.
(WebCore::RenderFileUploadControl::uploadButton): Added a helper to retrieve the button.
(WebCore::RenderFileUploadControl::buttonValue): Changed to use uploadButton.
* rendering/RenderFileUploadControl.h: Changed decls.
* rendering/style/RenderStyleConstants.h: Removed FILE_UPLOAD_BUTTON decls.
git-svn-id: svn://svn.chromium.org/blink/trunk@88115 bbb929c8-8fbe-4397-9dbb-9b2b20218538
diff --git a/Source/WebCore/css/html.css b/Source/WebCore/css/html.css
index 11d9cdd..f9aafea 100644
--- a/Source/WebCore/css/html.css
+++ b/Source/WebCore/css/html.css
@@ -517,11 +517,17 @@
border: initial;
}
-input[type="button"], input[type="submit"], input[type="reset"], input[type="file"]::-webkit-file-upload-button {
+input[type="button"], input[type="submit"], input[type="reset"] {
-webkit-appearance: push-button;
white-space: pre
}
+input[type="file"]::-webkit-file-upload-button {
+ -webkit-appearance: push-button;
+ white-space: nowrap;
+ margin: 0;
+}
+
input[type="button"], input[type="submit"], input[type="reset"], input[type="file"]::-webkit-file-upload-button, button {
-webkit-box-align: center;
text-align: center;