Skip to content
This repository has been archived by the owner on Jun 16, 2018. It is now read-only.

Commit

Permalink
[CSS3 Backgrounds and Borders] Implement new CSS3 background-position…
Browse files Browse the repository at this point in the history
… parsing.

https://bugs.webkit.org/show_bug.cgi?id=102104

Reviewed by Julien Chaffraix.

.:

Protect the new feature behind a feature flag.

* Source/cmake/WebKitFeatures.cmake:
* Source/cmakeconfig.h.cmake:
* configure.ac:

Source/JavaScriptCore:

Protect the new feature behind a feature flag.

* Configurations/FeatureDefines.xcconfig:

Source/WebCore:

Implement the parsing of the CSS3 background-position property which
allows to specify up to four values to position the background. It is
documented here :
http://www.w3.org/TR/css3-background/#the-background-position . I
decided to split up the patch is two pieces, the parsing and later I
will do the rendering. I kept the old code as much as possible (i.e.
the two values parsing) as it is used not only by background-position
but by few other properties. The new four values support is only valid
on the property itself but does not work on the shorthand.

Opera has already implemented this feature.

I extended backgrounds/background-position-parsing-2.html to cover the
new possible values as well as buggy values.

* Configurations/FeatureDefines.xcconfig:
* GNUmakefile.am:
* GNUmakefile.features.am:
* css/CSSParser.cpp:
(WebCore::CSSParser::parseFillPositionComponent): Modify this function
to allow creation of CSS primitive values with not only percentage or
length but with keywords also as the new <position> type allows to
specify keywords, for example top 30px right 20px.
(WebCore):
(WebCore::isValueConflictingWithCurrentEdge):
(WebCore::isBackgroundPositionKeyword):
(WebCore::CSSParser::parse3ValuesBackgroundPosition):
(WebCore::CSSParser::parse4ValuesBackgroundPosition):
(WebCore::CSSParser::parseFillBackgroundPosition): This function counts
the number of words for the property value and call dedicated parsing
functions for each case. Note that in case of two values we just call the old CSS 2.1
method.
(WebCore::CSSParser::parseFillPosition):
(WebCore::CSSParser::parseFillProperty): Only call the new parsing
function if the feature is activated otherwise fallback to the old code
path.
* css/CSSParser.h:

Source/WebKit/chromium:

Protect the new feature behind a feature flag.

* features.gypi:

Source/WebKit/mac:

Protect the new feature behind a feature flag.

* Configurations/FeatureDefines.xcconfig:

Source/WebKit2:

Protect the new feature behind a feature flag.

* Configurations/FeatureDefines.xcconfig:

Tools:

Protect the new feature behind a feature flag.

* Scripts/webkitperl/FeatureList.pm:
* qmake/mkspecs/features/features.pri:

WebKitLibraries:

Protect the new feature behind a feature flag.

* win/tools/vsprops/FeatureDefines.vsprops:
* win/tools/vsprops/FeatureDefinesCairo.vsprops:

LayoutTests:

Add new tests to cover the new parsing for the background position
property. For now the computed style checks are commented out because
the rendering part of the feature is not yet implemented (i.e.
FillLayer does not contain yet the feature and this is what
CSSComputedStyleDeclaration is using).

* fast/backgrounds/background-position-parsing-2-expected.txt:
* fast/backgrounds/background-position-parsing-2.html:
* platform/chromium/TestExpectations:
* platform/efl/TestExpectations:
* platform/gtk/TestExpectations:
* platform/mac/TestExpectations:
* platform/qt/TestExpectations:
* platform/win/TestExpectations:
* platform/wincairo/TestExpectations:


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@135632 268f45cc-cd09-0410-ab3c-d52691b4dbfc
  • Loading branch information
alexis@webkit.org committed Nov 23, 2012
1 parent dfb69fd commit d4f3166
Show file tree
Hide file tree
Showing 34 changed files with 713 additions and 15 deletions.
13 changes: 13 additions & 0 deletions ChangeLog
Original file line number Diff line number Diff line change
@@ -1,3 +1,16 @@
2012-11-23 Alexis Menard <alexis@webkit.org>

[CSS3 Backgrounds and Borders] Implement new CSS3 background-position parsing.
https://bugs.webkit.org/show_bug.cgi?id=102104

Reviewed by Julien Chaffraix.

Protect the new feature behind a feature flag.

* Source/cmake/WebKitFeatures.cmake:
* Source/cmakeconfig.h.cmake:
* configure.ac:

2012-11-23 Patrick Gansterer <paroga@webkit.org>

[CMake] Add support for winflexbison distribution
Expand Down
23 changes: 23 additions & 0 deletions LayoutTests/ChangeLog
Original file line number Diff line number Diff line change
@@ -1,3 +1,26 @@
2012-11-23 Alexis Menard <alexis@webkit.org>

[CSS3 Backgrounds and Borders] Implement new CSS3 background-position parsing.
https://bugs.webkit.org/show_bug.cgi?id=102104

Reviewed by Julien Chaffraix.

Add new tests to cover the new parsing for the background position
property. For now the computed style checks are commented out because
the rendering part of the feature is not yet implemented (i.e.
FillLayer does not contain yet the feature and this is what
CSSComputedStyleDeclaration is using).

* fast/backgrounds/background-position-parsing-2-expected.txt:
* fast/backgrounds/background-position-parsing-2.html:
* platform/chromium/TestExpectations:
* platform/efl/TestExpectations:
* platform/gtk/TestExpectations:
* platform/mac/TestExpectations:
* platform/qt/TestExpectations:
* platform/win/TestExpectations:
* platform/wincairo/TestExpectations:

2012-11-23 Zan Dobersek <zandobersek@gmail.com>

Unreviewed gardening.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ Test to make sure background-position is parsed correctly.
On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".


background-position with one value
PASS style.backgroundPosition is '70% 50%'
PASS computedStyle.backgroundPosition is '70% 50%'
PASS style.backgroundPosition is '84px 50%'
Expand All @@ -17,6 +18,7 @@ PASS style.backgroundPosition is '50% 0%'
PASS computedStyle.backgroundPosition is '50% 0%'
PASS style.backgroundPosition is '50% 50%'
PASS computedStyle.backgroundPosition is '50% 50%'
background-position with two values
PASS style.backgroundPosition is '0% 100%'
PASS computedStyle.backgroundPosition is '0% 100%'
PASS style.backgroundPosition is '0% 100%'
Expand Down Expand Up @@ -49,6 +51,7 @@ PASS style.backgroundPosition is '100% 0%'
PASS computedStyle.backgroundPosition is '100% 0%'
PASS style.backgroundPosition is '50% 50%'
PASS computedStyle.backgroundPosition is '50% 50%'
background-position invalid with one or two values, no change expected
PASS style.backgroundPosition is '50% 50%'
PASS computedStyle.backgroundPosition is '50% 50%'
PASS style.backgroundPosition is '50% 50%'
Expand Down Expand Up @@ -77,6 +80,7 @@ PASS style.backgroundPosition is '50% 50%'
PASS computedStyle.backgroundPosition is '50% 50%'
PASS style.backgroundPosition is '50% 50%'
PASS computedStyle.backgroundPosition is '50% 50%'
background-position with CSS3 comma separator, one or two values
PASS style.backgroundPosition is '50% 50%, 100% 50%'
PASS computedStyle.backgroundPosition is '50% 50%, 100% 50%'
PASS style.backgroundPosition is '50% 0%, 50% 100%'
Expand All @@ -85,12 +89,63 @@ PASS style.backgroundPosition is '100% 50%, 5px 100%'
PASS computedStyle.backgroundPosition is '100% 50%, 5px 100%'
PASS style.backgroundPosition is '0% 0%, 100% 100%'
PASS computedStyle.backgroundPosition is '0% 0%, 100% 100%'
background-position with CSS3 comma separator, with invalid one or two values, no change expected
PASS style.backgroundPosition is '0% 0%, 100% 100%'
PASS computedStyle.backgroundPosition is '0% 0%, 100% 100%'
PASS style.backgroundPosition is '0% 0%, 100% 100%'
PASS computedStyle.backgroundPosition is '0% 0%, 100% 100%'
PASS style.backgroundPosition is '0% 0%, 100% 100%'
PASS computedStyle.backgroundPosition is '0% 0%, 100% 100%'
background-position with CSS3 four values
PASS style.backgroundPosition is 'left 10px top 15px'
PASS style.backgroundPosition is 'left 10% top 30%'
PASS style.backgroundPosition is 'left 30% top 10%'
PASS style.backgroundPosition is 'right 0% top 15px'
PASS style.backgroundPosition is 'left 10px top 50%'
PASS style.backgroundPosition is 'left 50% top 20px'
PASS style.backgroundPosition is 'left 50% top 20px'
PASS style.backgroundPosition is 'left 30px top 50%'
PASS style.backgroundPosition is 'left 20% top 0%'
background-position with CSS3 invalid four values, no change expected
PASS style.backgroundPosition is 'left 20% top 0%'
PASS style.backgroundPosition is 'left 20% top 0%'
PASS style.backgroundPosition is 'left 20% top 0%'
PASS style.backgroundPosition is 'left 20% top 0%'
PASS style.backgroundPosition is 'left 20% top 0%'
PASS style.backgroundPosition is 'left 20% top 0%'
PASS style.backgroundPosition is 'left 20% top 0%'
PASS style.backgroundPosition is 'left 20% top 0%'
PASS style.backgroundPosition is 'left 20% top 0%'
PASS style.backgroundPosition is 'left 20% top 0%'
PASS style.backgroundPosition is 'left 20% top 0%'
PASS style.backgroundPosition is 'left 20% top 0%'
PASS style.backgroundPosition is 'left 20% top 0%'
PASS style.backgroundPosition is 'left 20% top 0%'
PASS style.backgroundPosition is 'left 20% top 0%'
PASS style.backgroundPosition is 'left 20% top 0%'
PASS style.backgroundPosition is 'left 20% top 0%'
PASS style.backgroundPosition is 'left 20% top 0%'
PASS style.backgroundPosition is 'left 20% top 0%'
PASS style.backgroundPosition is 'left 20% top 0%'
PASS style.backgroundPosition is 'left 20% top 0%'
PASS style.backgroundPosition is 'left 20% top 0%'
PASS style.backgroundPosition is 'left 20% top 0%'
PASS style.backgroundPosition is 'left 20% top 0%'
PASS style.backgroundPosition is 'left 20% top 0%'
PASS style.backgroundPosition is 'left 20% top 0%'
PASS style.backgroundPosition is 'left 20% top 0%'
PASS style.backgroundPosition is 'left 20% top 0%'
PASS style.backgroundPosition is 'left 20% top 0%'
background-position with CSS3 four values and comma
PASS style.backgroundPosition is '50% 50%, left 0% bottom 20px'
PASS style.backgroundPosition is 'right 20px bottom 20px, 0% 50%'
PASS style.backgroundPosition is 'left 10px top 15px, right 20% bottom 20px'
PASS style.backgroundPosition is 'left 10% top 0%, right 0% top 0px'
PASS style.backgroundPosition is 'right 0% top 15px, right 20px bottom 0%'
background-position with invalid CSS3 four values and comma, no change expected
PASS style.backgroundPosition is 'right 0% top 15px, right 20px bottom 0%'
PASS style.backgroundPosition is 'right 0% top 15px, right 20px bottom 0%'
PASS style.backgroundPosition is 'right 0% top 15px, right 20px bottom 0%'
PASS successfullyParsed is true

TEST COMPLETE
Expand Down
201 changes: 196 additions & 5 deletions LayoutTests/fast/backgrounds/background-position-parsing-2.html
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
style.backgroundImage = "url(resources/diamond.png)";
style.backgroundRepeat = "no-repeat";

// One value.
debug("background-position with one value");
style.backgroundPosition = "70%";
// Second value is assuming to be 'center'
shouldBe("style.backgroundPosition", "'70% 50%'");
Expand Down Expand Up @@ -49,7 +49,7 @@
shouldBe("style.backgroundPosition", "'50% 50%'");
shouldBe("computedStyle.backgroundPosition", "'50% 50%'");

// Two values.
debug("background-position with two values");
style.backgroundPosition = "left bottom";
shouldBe("style.backgroundPosition", "'0% 100%'");
shouldBe("computedStyle.backgroundPosition", "'0% 100%'");
Expand Down Expand Up @@ -114,7 +114,7 @@
shouldBe("style.backgroundPosition", "'50% 50%'");
shouldBe("computedStyle.backgroundPosition", "'50% 50%'");

// A bunch of invalid values, no changes expected on the style.
debug("background-position invalid with one or two values, no change expected");
style.backgroundPosition = "5 right";
shouldBe("style.backgroundPosition", "'50% 50%'");
shouldBe("computedStyle.backgroundPosition", "'50% 50%'");
Expand Down Expand Up @@ -171,7 +171,7 @@
shouldBe("style.backgroundPosition", "'50% 50%'");
shouldBe("computedStyle.backgroundPosition", "'50% 50%'");

// CSS3, new comma separator.
debug("background-position with CSS3 comma separator, one or two values");
style.backgroundImage = "url(resources/diamond.png), url(resources/ring.png)";
style.backgroundRepeat = "no-repeat";

Expand All @@ -191,7 +191,7 @@
shouldBe("style.backgroundPosition", "'0% 0%, 100% 100%'");
shouldBe("computedStyle.backgroundPosition", "'0% 0%, 100% 100%'");

// A bunch of invalid CSS3 values, no changes expected on the style.
debug("background-position with CSS3 comma separator, with invalid one or two values, no change expected");
style.backgroundPosition = "0 center, right right";
shouldBe("style.backgroundPosition", "'0% 0%, 100% 100%'");
shouldBe("computedStyle.backgroundPosition", "'0% 0%, 100% 100%'");
Expand All @@ -204,6 +204,197 @@
shouldBe("style.backgroundPosition", "'0% 0%, 100% 100%'");
shouldBe("computedStyle.backgroundPosition", "'0% 0%, 100% 100%'");

debug("background-position with CSS3 four values");
style.backgroundImage = "url(resources/diamond.png)";
style.backgroundPosition = "left 10px top 15px";
shouldBe("style.backgroundPosition", "'left 10px top 15px'");
//shouldBe("computedStyle.backgroundPosition", "'left 10px top 15px'");

style.backgroundPosition = "left 10% top 30%";
shouldBe("style.backgroundPosition", "'left 10% top 30%'");
//shouldBe("computedStyle.backgroundPosition", "'left 10% top 30%'");

style.backgroundPosition = "top 10% left 30%";
shouldBe("style.backgroundPosition", "'left 30% top 10%'");
//shouldBe("computedStyle.backgroundPosition", "'left 30% top 10%'");

style.backgroundPosition = "right top 15px";
shouldBe("style.backgroundPosition", "'right 0% top 15px'");
//shouldBe("computedStyle.backgroundPosition", "'right 0% top 15px'");

style.backgroundPosition = "left 10px center";
shouldBe("style.backgroundPosition", "'left 10px top 50%'");
//shouldBe("computedStyle.backgroundPosition", "'left 10px top 50%'");

style.backgroundPosition = "center top 20px";
shouldBe("style.backgroundPosition", "'left 50% top 20px'");
//shouldBe("computedStyle.backgroundPosition", "'left 50% top 20px'");

style.backgroundPosition = "top 20px center";
shouldBe("style.backgroundPosition", "'left 50% top 20px'");
//shouldBe("computedStyle.backgroundPosition", "'left 50% top 20px'");

style.backgroundPosition = "center left 30px";
shouldBe("style.backgroundPosition", "'left 30px top 50%'");
//shouldBe("computedStyle.backgroundPosition", "'left 30px top 50%'");

style.backgroundPosition = "left 20% top";
shouldBe("style.backgroundPosition", "'left 20% top 0%'");
//shouldBe("computedStyle.backgroundPosition", "'left 20% top 0%'");

debug("background-position with CSS3 invalid four values, no change expected");
style.backgroundPosition = "left center top";
shouldBe("style.backgroundPosition", "'left 20% top 0%'");
//shouldBe("computedStyle.backgroundPosition", "'left 20% top 0%'");

style.backgroundPosition = "0px right top";
shouldBe("style.backgroundPosition", "'left 20% top 0%'");
//shouldBe("computedStyle.backgroundPosition", "'left 20% top 0%'");

style.backgroundPosition = "left center top center";
shouldBe("style.backgroundPosition", "'left 20% top 0%'");
//shouldBe("computedStyle.backgroundPosition", "'left 20% top 0%'");

style.backgroundPosition = "left center top 20%";
shouldBe("style.backgroundPosition", "'left 20% top 0%'");
//shouldBe("computedStyle.backgroundPosition", "'left 20% top 0%'");

style.backgroundPosition = "center bottom top 20%";
shouldBe("style.backgroundPosition", "'left 20% top 0%'");
//shouldBe("computedStyle.backgroundPosition", "'left 20% top 0%'");

style.backgroundPosition = "right bottom top";
shouldBe("style.backgroundPosition", "'left 20% top 0%'");
//shouldBe("computedStyle.backgroundPosition", "'left 20% top 0%'");

style.backgroundPosition = "right bottom solid";
shouldBe("style.backgroundPosition", "'left 20% top 0%'");
//shouldBe("computedStyle.backgroundPosition", "'left 20% top 0%'");

style.backgroundPosition = "20px bottom top";
shouldBe("style.backgroundPosition", "'left 20% top 0%'");
//shouldBe("computedStyle.backgroundPosition", "'left 20% top 0%'");

style.backgroundPosition = "20px bottom hidden";
shouldBe("style.backgroundPosition", "'left 20% top 0%'");
//shouldBe("computedStyle.backgroundPosition", "'left 20% top 0%'");

style.backgroundPosition = "solid dotted bottom top";
shouldBe("style.backgroundPosition", "'left 20% top 0%'");
//shouldBe("computedStyle.backgroundPosition", "'left 20% top 0%'");

style.backgroundPosition = "top top top top";
shouldBe("style.backgroundPosition", "'left 20% top 0%'");
//shouldBe("computedStyle.backgroundPosition", "'left 20% top 0%'");

style.backgroundPosition = "left 0px right 20%";
shouldBe("style.backgroundPosition", "'left 20% top 0%'");
//shouldBe("computedStyle.backgroundPosition", "'left 20% top 0%'");

style.backgroundPosition = "left 30% top 20% center";
shouldBe("style.backgroundPosition", "'left 20% top 0%'");
//shouldBe("computedStyle.backgroundPosition", "'left 20% top 0%'");

style.backgroundPosition = "20px 30% bottom";
shouldBe("style.backgroundPosition", "'left 20% top 0%'");
//shouldBe("computedStyle.backgroundPosition", "'left 20% top 0%'");

style.backgroundPosition = "top 0px bottom";
shouldBe("style.backgroundPosition", "'left 20% top 0%'");
//shouldBe("computedStyle.backgroundPosition", "'left 20% top 0%'");

style.backgroundPosition = "left 0px right";
shouldBe("style.backgroundPosition", "'left 20% top 0%'");
//shouldBe("computedStyle.backgroundPosition", "'left 20% top 0%'");

style.backgroundPosition = "top 0px bottom 30px top";
shouldBe("style.backgroundPosition", "'left 20% top 0%'");
//shouldBe("computedStyle.backgroundPosition", "'left 20% top 0%'");

style.backgroundPosition = "left 10px center 15px";
shouldBe("style.backgroundPosition", "'left 20% top 0%'");
//shouldBe("computedStyle.backgroundPosition", "'left 20% top 0%'");

style.backgroundPosition = "left 10px top center";
shouldBe("style.backgroundPosition", "'left 20% top 0%'");
//shouldBe("computedStyle.backgroundPosition", "'left 20% top 0%'");

style.backgroundPosition = "center right top 20px";
shouldBe("style.backgroundPosition", "'left 20% top 0%'");
//shouldBe("computedStyle.backgroundPosition", "'left 20% top 0%'");

style.backgroundPosition = "center 10px center 10px";
shouldBe("style.backgroundPosition", "'left 20% top 0%'");
//shouldBe("computedStyle.backgroundPosition", "'left 20% top 0%'");

style.backgroundPosition = "top center center";
shouldBe("style.backgroundPosition", "'left 20% top 0%'");
//shouldBe("computedStyle.backgroundPosition", "'left 20% top 0%'");

style.backgroundPosition = "center 10px center";
shouldBe("style.backgroundPosition", "'left 20% top 0%'");
//shouldBe("computedStyle.backgroundPosition", "'left 20% top 0%'");

style.backgroundPosition = "center center 10px";
shouldBe("style.backgroundPosition", "'left 20% top 0%'");
//shouldBe("computedStyle.backgroundPosition", "'left 20% top 0%'");

style.backgroundPosition = "center 0px left 20%";
shouldBe("style.backgroundPosition", "'left 20% top 0%'");
//shouldBe("computedStyle.backgroundPosition", "'left 20% top 0%'");

style.backgroundPosition = "left center top";
shouldBe("style.backgroundPosition", "'left 20% top 0%'");
//shouldBe("computedStyle.backgroundPosition", "'left 20% top 0%'");

style.backgroundPosition = "center center center";
shouldBe("style.backgroundPosition", "'left 20% top 0%'");
//shouldBe("computedStyle.backgroundPosition", "'left 20% top 0%'");

style.backgroundPosition = "top left 50% 50%";
shouldBe("style.backgroundPosition", "'left 20% top 0%'");
//shouldBe("computedStyle.backgroundPosition", "'left 20% top 0%'");

style.backgroundPosition = "center center center center";
shouldBe("style.backgroundPosition", "'left 20% top 0%'");
//shouldBe("computedStyle.backgroundPosition", "'left 20% top 0%'");

debug("background-position with CSS3 four values and comma");
style.backgroundImage = "url(resources/diamond.png), url(resources/ring.png)";

style.backgroundPosition = "center, left bottom 20px";
shouldBe("style.backgroundPosition", "'50% 50%, left 0% bottom 20px'");
//shouldBe("style.backgroundPosition", "'50% 50%, left 0% bottom 20px'");

style.backgroundPosition = "right 20px bottom 20px, center left";
shouldBe("style.backgroundPosition", "'right 20px bottom 20px, 0% 50%'");
//shouldBe("style.backgroundPosition", "'right 20px bottom 20px, 0% 50%'");

style.backgroundPosition = "left 10px top 15px, right 20% bottom 20px";
shouldBe("style.backgroundPosition", "'left 10px top 15px, right 20% bottom 20px'");
//shouldBe("computedStyle.backgroundPosition", "'left 10px top 15px, right 20% bottom 20px'");

style.backgroundPosition = "left 10% top, top 0px right";
shouldBe("style.backgroundPosition", "'left 10% top 0%, right 0% top 0px'");
//shouldBe("computedStyle.backgroundPosition", "'left 10% top 0%, right 0% top 0px'");

style.backgroundPosition = "right top 15px, bottom right 20px";
shouldBe("style.backgroundPosition", "'right 0% top 15px, right 20px bottom 0%'");
//shouldBe("computedStyle.backgroundPosition", "'right 0% top 15px, right 20px bottom 0%'");

debug("background-position with invalid CSS3 four values and comma, no change expected");
style.backgroundPosition = "right top 15px, left right 20px";
shouldBe("style.backgroundPosition", "'right 0% top 15px, right 20px bottom 0%'");
//shouldBe("computedStyle.backgroundPosition", "'right 0% top 15px, right 20px bottom 0%'");

style.backgroundPosition = "right left 15px, left bottom 20px";
shouldBe("style.backgroundPosition", "'right 0% top 15px, right 20px bottom 0%'");
//shouldBe("computedStyle.backgroundPosition", "'right 0% top 15px, right 20px bottom 0%'");

style.backgroundPosition = "solid, left bottom 20px";
shouldBe("style.backgroundPosition", "'right 0% top 15px, right 20px bottom 0%'");
//shouldBe("computedStyle.backgroundPosition", "'right 0% top 15px, right 20px bottom 0%'");*/

document.body.removeChild(testContainer);
</script>
<script src="../js/resources/js-test-post.js"></script>
Expand Down
3 changes: 3 additions & 0 deletions LayoutTests/platform/chromium/TestExpectations
Original file line number Diff line number Diff line change
Expand Up @@ -216,6 +216,9 @@ webkit.org/b/89052 fast/css/image-orientation
webkit.org/b/58491 fast/css3-text/css3-text-decoration
webkit.org/b/76173 fast/css3-text/css3-text-align-last

# CSS3 Background is not yet enabled (needs ENABLE_CSS3_BACKGROUND).
webkit.org/b/37514 fast/backgrounds/background-position-parsing-2.html [ Text ]

# Chromium does not support smart pasting in text controls yet.
webkit.org/b/60830 editing/pasteboard/smart-paste-in-text-control.html

Expand Down
Loading

0 comments on commit d4f3166

Please sign in to comment.