2 * Copyright (C) 2006, 2007, 2009, 2012 Apple Inc. All rights reserved.
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Library General Public
6 * License as published by the Free Software Foundation; either
7 * version 2 of the License, or (at your option) any later version.
9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Library General Public License for more details.
14 * You should have received a copy of the GNU Library General Public License
15 * along with this library; see the file COPYING.LIB. If not, write to
16 * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
17 * Boston, MA 02110-1301, USA.
21 #ifndef LayoutFileUploadControl_h
22 #define LayoutFileUploadControl_h
24 #include "core/CoreExport.h"
25 #include "core/layout/LayoutBlockFlow.h"
29 class HTMLInputElement
;
31 // Each LayoutFileUploadControl contains a LayoutButton (for opening the file chooser), and
32 // sufficient space to draw a file icon and filename. The LayoutButton has a shadow node
33 // associated with it to receive click/hover events.
35 class CORE_EXPORT LayoutFileUploadControl final
: public LayoutBlockFlow
{
37 LayoutFileUploadControl(HTMLInputElement
*);
38 ~LayoutFileUploadControl() override
;
40 bool isOfType(LayoutObjectType type
) const override
{ return type
== LayoutObjectFileUploadControl
|| LayoutBlockFlow::isOfType(type
); }
43 String
fileTextValue() const;
45 HTMLInputElement
* uploadButton() const;
46 int uploadButtonWidth();
48 static const int afterButtonSpacing
= 4;
50 const char* name() const override
{ return "LayoutFileUploadControl"; }
53 void updateFromElement() override
;
54 void computeIntrinsicLogicalWidths(LayoutUnit
& minLogicalWidth
, LayoutUnit
& maxLogicalWidth
) const override
;
55 void computePreferredLogicalWidths() override
;
56 void paintObject(const PaintInfo
&, const LayoutPoint
&) override
;
58 int maxFilenameWidth() const;
60 PositionWithAffinity
positionForPoint(const LayoutPoint
&) override
;
62 bool m_canReceiveDroppedFiles
;
65 DEFINE_LAYOUT_OBJECT_TYPE_CASTS(LayoutFileUploadControl
, isFileUploadControl());
69 #endif // LayoutFileUploadControl_h