This section will describe each branch and what changes they introduce. Note that some of these changes have been contributed upstream. Our intention is to contribute as many changes upstream as possible so that we do not have to maintain these branches in our repository.
However, we realize that some of these changes are made in order to adjust the
behavior of our own product, and may not be desirable/applicable to the
general web. For example, the way the <delete>
/<backspace>
keys work
inside table cells, the way indenting/outdenting of list items work, etc.
Therefore, we will probably not be able to send everything upstream.
Open this link in Chrome. The
“pill” elements have -webkit-user-modify: read-only
, however, the caret
still gets rendered within the pills. But when the user types, the text
(correctly) gets inserted outside the pills. Also, the caret is rendered
outside the contenteditable div if there is no text after the pills.
Open this link in Chrome, and put the caret
inside an empty table cell. The caret’s y-position
is outside the
table-cell
.
Open this link in Chrome, and try to select an empty line. The line-ending is not highlighted.
Open this link in Chrome. The second and third
list items will be selected. Click on the OL
button to convert these items
to an ordered list. The second and third list items get placed into separate
lists, but they should be on the same list. Note that this doesn’t happen if
the first and second items are selected instead.
Open this link in Chrome. Then drag another window so that it partially overlaps the green box. Move the mouse over to the green box, it will turn red. Now move the mouse to the overlapping window. It should turn back to green, but because of a bug, it doesn’t.
Open this link in Chrome. Move the mouse inside and outside the Chrome window. When the mouse is inside, a green box appears; when the mouse is outside, the box is red. The color changes are caused by ‘mouseenter’ and ‘mousleave’ events firing. Now drag another window so that it partially overlaps the Chrome window. Move the mouse from the Chrome window to the overlapping window; the box should turn red, but it doesn’t.
Open this link in Chrome. Each line has a tooltip set. However, when the first tooltip shows up, and you move the mouse away from it, it doesn’t move the tooltip to the element where the mouse is.
This is a feature we needed in our product, so it is unlikely that we will send this upstream.
In previous versions of WebKit, specifying “font-family: Foo Bold” would automatically pick the bold version of the font “Foo”, even when font-weight was not set. Unfortunately, we have content out there that took advantage of this, and now we need to support that behavior forever.
Open this link and make sure the bold/italic fonts are displayed correctly.
This is our chromium embedding layer.
These are extensions to the Web platform that we use in our products.
These are extensions to the Web platform that we use in our products.
-bb-pre-wrap-text
repro.-bb-keep-all-if-korean
repro.This is a feature we needed in our product, so it is unlikely that we will send this upstream.
We needed extra control of the color of the document markers (i.e. the squiggly lines for spelling errors etc). WebKit hardcodes spelling errors to red, grammar errors to green. This branch makes it possible for us to specify the color from the document.
Open this link in Chrome. With this patch, the mis-spelled words will be underlined in the specified colors.
TODO: make this a CSS property instead of a DOM attribute.
This is a feature we needed in our product, so it is unlikely that we will send this upstream.
We needed to expose the full path to a dragged file object. Open this link, and drag some files from Windows Explorer into the page. The DragOver and Drop events should print out the full path to the file.
This is a complete reimplementation of the “Indent” and “Outdent” algorithm, called “IndentBlock” and “OutdentBlock”. Instead of cloning paragraphs, and deleting the old paragraphs, this algorithm just moves blocks in and out of blockquotes. Also, it operates on blocks of text, instead of paragraphs. This is similar to how MSWord works.
The following links can be used to compare the behavior when this branch is applied, and when it isn’t (e.g. with upstream Chrome):
OUTDENT
button. There are now a bunch
of empty lines added in between. There is an upstream
bug 92130 for this.This is a feature we needed in our product, so it is unlikely that we will send this upstream.
We needed to modify the behavior of the InsertHTML
command. The WebKit
behavior is to prevent the inserted HTML from being nested inside style
spans. This branch adds InsertHTMLNested
command that allows the HTML to be
nested inside style spans.
Open this link in Chrome. With this patch, the “Insert HTML Nested” button works to preserve the font setting. The default “Insert HTML” button doesn’t preserve it.
Open this link in Chrome. The word “hello” will be highlighted. Now press “Insert HTML”. The “hello” text will be replaced with a link. However, we lose one newline between “hello” and “world”. With this patch, the “Insert HTML Nested” button does the same thing, except that the newlines are preserved.
This branch makes a bunch of enhancements to list markers that were needed in our product, so it is unlikely that many of them will be sent upstream.
The following changes are included in this branch:
li
elements are not. This particular change may be able to upstream because
there is already a WebKit bug report for it.BIGGER
or SMALLER
to change the font
size, the list marker’s font does not change with it. In our product, we
wanted the list marker’s font to match the first character in the list
item.::selection
background color
specified in the stylesheet. In our product, we didn’t want the list
markers to be highlighted when selected.OL
/UL
elements having 40px padding, the LI
elements will receive an additional (intrinsic) margin equivalent to the
width of the list marker. This matches more closely what other software
like Microsoft Word does, and also prevents issues like
this link where the list marker
gets pushed outside the page.This is a feature we needed in our product, so it is unlikely that we will send this upstream.
By default, Chrome shows a black underline while composing in IME mode. This
is a problem if the background is also black. This branch removes the color
property from the CompositionUnderline
object, and makes InlineTextBox
use the text foreground color instead.
Open this link in Chrome and type in Japanese. Without this patch, the underline color will be black, but it will be yellow once the patch is applied.