Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(730)

Unified Diff: Source/core/html/forms/FileInputType.cpp

Issue 27746003: Have InputType factories take an HTMLInputElement reference in parameter (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Rebase on master Created 7 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « Source/core/html/forms/FileInputType.h ('k') | Source/core/html/forms/HiddenInputType.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: Source/core/html/forms/FileInputType.cpp
diff --git a/Source/core/html/forms/FileInputType.cpp b/Source/core/html/forms/FileInputType.cpp
index 8894af15656b17c55243b801eb2dd29518852516..2a2be023b4ff52c08110b3833ad6cdfc3d6e8d17 100644
--- a/Source/core/html/forms/FileInputType.cpp
+++ b/Source/core/html/forms/FileInputType.cpp
@@ -48,13 +48,13 @@ namespace WebCore {
using WebKit::WebLocalizedString;
using namespace HTMLNames;
-inline FileInputType::FileInputType(HTMLInputElement* element)
+inline FileInputType::FileInputType(HTMLInputElement& element)
: BaseClickableWithKeyInputType(element)
, m_fileList(FileList::create())
{
}
-PassRefPtr<InputType> FileInputType::create(HTMLInputElement* element)
+PassRefPtr<InputType> FileInputType::create(HTMLInputElement& element)
{
return adoptRef(new FileInputType(element));
}
@@ -98,7 +98,7 @@ void FileInputType::restoreFormControlState(const FormControlState& state)
bool FileInputType::appendFormData(FormDataList& encoding, bool multipart) const
{
- FileList* fileList = element()->files();
+ FileList* fileList = element().files();
unsigned numFiles = fileList->length();
if (!multipart) {
// Send only the basenames.
@@ -109,35 +109,35 @@ bool FileInputType::appendFormData(FormDataList& encoding, bool multipart) const
// submission of file inputs, and Firefox doesn't add "name=" query
// parameter.
for (unsigned i = 0; i < numFiles; ++i)
- encoding.appendData(element()->name(), fileList->item(i)->name());
+ encoding.appendData(element().name(), fileList->item(i)->name());
return true;
}
// If no filename at all is entered, return successful but empty.
// Null would be more logical, but Netscape posts an empty file. Argh.
if (!numFiles) {
- encoding.appendBlob(element()->name(), File::create(""));
+ encoding.appendBlob(element().name(), File::create(""));
return true;
}
for (unsigned i = 0; i < numFiles; ++i)
- encoding.appendBlob(element()->name(), fileList->item(i));
+ encoding.appendBlob(element().name(), fileList->item(i));
return true;
}
bool FileInputType::valueMissing(const String& value) const
{
- return element()->isRequired() && value.isEmpty();
+ return element().isRequired() && value.isEmpty();
}
String FileInputType::valueMissingText() const
{
- return locale().queryString(element()->multiple() ? WebLocalizedString::ValidationValueMissingForMultipleFile : WebLocalizedString::ValidationValueMissingForFile);
+ return locale().queryString(element().multiple() ? WebLocalizedString::ValidationValueMissingForMultipleFile : WebLocalizedString::ValidationValueMissingForFile);
}
void FileInputType::handleDOMActivateEvent(Event* event)
{
- if (element()->isDisabledFormControl())
+ if (element().isDisabledFormControl())
return;
if (!UserGestureIndicator::processingUserGesture())
@@ -145,23 +145,23 @@ void FileInputType::handleDOMActivateEvent(Event* event)
if (Chrome* chrome = this->chrome()) {
FileChooserSettings settings;
- HTMLInputElement* input = element();
- settings.allowsDirectoryUpload = RuntimeEnabledFeatures::directoryUploadEnabled() && input->fastHasAttribute(webkitdirectoryAttr);
- settings.allowsMultipleFiles = settings.allowsDirectoryUpload || input->fastHasAttribute(multipleAttr);
- settings.acceptMIMETypes = input->acceptMIMETypes();
- settings.acceptFileExtensions = input->acceptFileExtensions();
+ HTMLInputElement& input = element();
+ settings.allowsDirectoryUpload = RuntimeEnabledFeatures::directoryUploadEnabled() && input.fastHasAttribute(webkitdirectoryAttr);
+ settings.allowsMultipleFiles = settings.allowsDirectoryUpload || input.fastHasAttribute(multipleAttr);
+ settings.acceptMIMETypes = input.acceptMIMETypes();
+ settings.acceptFileExtensions = input.acceptFileExtensions();
settings.selectedFiles = m_fileList->paths();
#if ENABLE(MEDIA_CAPTURE)
- settings.useMediaCapture = input->capture();
+ settings.useMediaCapture = input.capture();
#endif
- chrome->runOpenPanel(input->document().frame(), newFileChooser(settings));
+ chrome->runOpenPanel(input.document().frame(), newFileChooser(settings));
}
event->setDefaultHandled();
}
RenderObject* FileInputType::createRenderer(RenderStyle*) const
{
- return new RenderFileUploadControl(element());
+ return new RenderFileUploadControl(&element());
}
bool FileInputType::canSetStringValue() const
@@ -203,7 +203,7 @@ bool FileInputType::getTypeSpecificValue(String& value)
void FileInputType::setValue(const String&, bool, TextFieldEventBehavior)
{
m_fileList->clear();
- element()->setNeedsStyleRecalc();
+ element().setNeedsStyleRecalc();
}
PassRefPtr<FileList> FileInputType::createFileList(const Vector<FileChooserFileInfo>& files) const
@@ -214,7 +214,7 @@ PassRefPtr<FileList> FileInputType::createFileList(const Vector<FileChooserFileI
// If a directory is being selected, the UI allows a directory to be chosen
// and the paths provided here share a root directory somewhere up the tree;
// we want to store only the relative paths from that point.
- if (size && element()->fastHasAttribute(webkitdirectoryAttr) && RuntimeEnabledFeatures::directoryUploadEnabled()) {
+ if (size && element().fastHasAttribute(webkitdirectoryAttr) && RuntimeEnabledFeatures::directoryUploadEnabled()) {
// Find the common root path.
String rootPath = directoryName(files[0].path);
for (size_t i = 1; i < size; i++) {
@@ -246,26 +246,26 @@ bool FileInputType::isFileUpload() const
void FileInputType::createShadowSubtree()
{
- ASSERT(element()->shadow());
- RefPtr<HTMLInputElement> button = HTMLInputElement::create(inputTag, element()->document(), 0, false);
+ ASSERT(element().shadow());
+ RefPtr<HTMLInputElement> button = HTMLInputElement::create(inputTag, element().document(), 0, false);
button->setType(InputTypeNames::button());
- button->setAttribute(valueAttr, locale().queryString(element()->multiple() ? WebLocalizedString::FileButtonChooseMultipleFilesLabel : WebLocalizedString::FileButtonChooseFileLabel));
+ button->setAttribute(valueAttr, locale().queryString(element().multiple() ? WebLocalizedString::FileButtonChooseMultipleFilesLabel : WebLocalizedString::FileButtonChooseFileLabel));
button->setPart(AtomicString("-webkit-file-upload-button", AtomicString::ConstructFromLiteral));
- element()->userAgentShadowRoot()->appendChild(button.release());
+ element().userAgentShadowRoot()->appendChild(button.release());
}
void FileInputType::disabledAttributeChanged()
{
- ASSERT(element()->shadow());
- if (Element* button = toElement(element()->userAgentShadowRoot()->firstChild()))
- button->setBooleanAttribute(disabledAttr, element()->isDisabledFormControl());
+ ASSERT(element().shadow());
+ if (Element* button = toElement(element().userAgentShadowRoot()->firstChild()))
+ button->setBooleanAttribute(disabledAttr, element().isDisabledFormControl());
}
void FileInputType::multipleAttributeChanged()
{
- ASSERT(element()->shadow());
- if (Element* button = toElement(element()->userAgentShadowRoot()->firstChild()))
- button->setAttribute(valueAttr, locale().queryString(element()->multiple() ? WebLocalizedString::FileButtonChooseMultipleFilesLabel : WebLocalizedString::FileButtonChooseFileLabel));
+ ASSERT(element().shadow());
+ if (Element* button = toElement(element().userAgentShadowRoot()->firstChild()))
+ button->setAttribute(valueAttr, locale().queryString(element().multiple() ? WebLocalizedString::FileButtonChooseMultipleFilesLabel : WebLocalizedString::FileButtonChooseFileLabel));
}
void FileInputType::setFiles(PassRefPtr<FileList> files)
@@ -273,7 +273,7 @@ void FileInputType::setFiles(PassRefPtr<FileList> files)
if (!files)
return;
- RefPtr<HTMLInputElement> input = element();
+ RefPtr<HTMLInputElement> input(element());
bool pathsChanged = false;
if (files->length() != m_fileList->length()) {
@@ -317,12 +317,12 @@ void FileInputType::receiveDropForDirectoryUpload(const Vector<String>& paths)
{
if (Chrome* chrome = this->chrome()) {
FileChooserSettings settings;
- HTMLInputElement* input = element();
+ HTMLInputElement& input = element();
settings.allowsDirectoryUpload = true;
settings.allowsMultipleFiles = true;
settings.selectedFiles.append(paths[0]);
- settings.acceptMIMETypes = input->acceptMIMETypes();
- settings.acceptFileExtensions = input->acceptFileExtensions();
+ settings.acceptMIMETypes = input.acceptMIMETypes();
+ settings.acceptFileExtensions = input.acceptFileExtensions();
chrome->enumerateChosenDirectory(newFileChooser(settings));
}
}
@@ -334,8 +334,8 @@ bool FileInputType::receiveDroppedFiles(const DragData* dragData)
if (paths.isEmpty())
return false;
- HTMLInputElement* input = element();
- if (input->fastHasAttribute(webkitdirectoryAttr) && RuntimeEnabledFeatures::directoryUploadEnabled()) {
+ HTMLInputElement& input = element();
+ if (input.fastHasAttribute(webkitdirectoryAttr) && RuntimeEnabledFeatures::directoryUploadEnabled()) {
receiveDropForDirectoryUpload(paths);
return true;
}
@@ -346,7 +346,7 @@ bool FileInputType::receiveDroppedFiles(const DragData* dragData)
for (unsigned i = 0; i < paths.size(); ++i)
files.append(FileChooserFileInfo(paths[i]));
- if (input->fastHasAttribute(multipleAttr)) {
+ if (input.fastHasAttribute(multipleAttr)) {
filesChosen(files);
} else {
Vector<FileChooserFileInfo> firstFileOnly;
« no previous file with comments | « Source/core/html/forms/FileInputType.h ('k') | Source/core/html/forms/HiddenInputType.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698