Commit 78c1fab2 authored by eae@chromium.org's avatar eae@chromium.org

Revert "Improve support for :read-only and :read-write pseudoclasses."

This reverts commit r167629 (f3f2415b3b74e995665bea03f4316e28424fceeb)
as it caused a secuirty regression.

BUG=353143
TBR=andersr@opera.com

Review URL: https://codereview.chromium.org/221683005

git-svn-id: svn://svn.chromium.org/blink/trunk@170627 bbb929c8-8fbe-4397-9dbb-9b2b20218538
parent b77d0baa
<!doctype html>
<style>
.readonly { background-color: #ccf; }
.readwrite { background-color: #fcc; }
</style>
<div class="readonly">Read-only</div>
<div class="readonly">Read-only <span class="readonly">Read-only</span></div>
<div class="readonly">Read-only <span class="readwrite">Read-write</span></div>
<div class="readwrite">Read-write <span>Read-write</span></div>
<div class="readwrite">Read-write <span class="readonly">Read-only</span></div>
<div class="readwrite">Read-write <span class="readonly">Read-only <span>Read-only</span</span></div>
<div <span class="readonly">Read-only <span class="readwrite">Read-write</span></div>
<div <span class="readonly">Read-only <span class="readwrite">Read-write <span>Read-write</span></span></div>
<div class="readwrite">Read-write <span class="readonly">Read-only <span>Read-only</span></span></div>
PASS getComputedStyle(p1)["background-color"] is "rgb(255, 204, 204)"
PASS getComputedStyle(c1a)["background-color"] is "rgb(255, 204, 204)"
PASS getComputedStyle(c1b)["background-color"] is "rgb(255, 204, 204)"
PASS getComputedStyle(p2)["background-color"] is "rgb(204, 255, 255)"
PASS getComputedStyle(c2a)["background-color"] is "rgb(204, 255, 255)"
PASS getComputedStyle(c2b)["background-color"] is "rgb(204, 255, 255)"
PASS getComputedStyle(p1)["background-color"] is "rgb(204, 255, 255)"
PASS getComputedStyle(c1a)["background-color"] is "rgb(204, 255, 255)"
PASS getComputedStyle(c1b)["background-color"] is "rgb(204, 255, 255)"
PASS getComputedStyle(p2)["background-color"] is "rgb(255, 204, 204)"
PASS getComputedStyle(c2a)["background-color"] is "rgb(255, 204, 204)"
PASS getComputedStyle(c2b)["background-color"] is "rgb(255, 204, 204)"
PASS successfullyParsed is true
TEST COMPLETE
Some parent text. Some child text.
Some parent text. Some child text.
<!doctype html>
<script src='../../resources/js-test.js'></script>
<style>
div:read-only, span:read-only { background-color: rgb(204, 255, 255); }
div:read-write, span:read-write { background-color: rgb(255, 204, 204); }
</style>
<div id="p1" contenteditable>Some parent text. <span id="c1a">Some <span id="c1b">child text.</span></span></div>
<div id="p2">Some parent text. <span id="c2a">Some <span id="c2b">child text.</span></span></div>
<script>
var readOnlyColor = '"rgb(204, 255, 255)"';
var readWriteColor = '"rgb(255, 204, 204)"';
var p1 = document.getElementById('p1');
var c1a = document.getElementById('c1a');
var c1b = document.getElementById('c1b');
var p2 = document.getElementById('p2');
var c2a = document.getElementById('c2a');
var c2b = document.getElementById('c2b');
var backgroundColorOf = function(elmName) {
return 'getComputedStyle('+elmName+')["background-color"]';
};
// Check initial computed style.
shouldBe(backgroundColorOf('p1'), readWriteColor);
shouldBe(backgroundColorOf('c1a'), readWriteColor);
shouldBe(backgroundColorOf('c1b'), readWriteColor);
shouldBe(backgroundColorOf('p2'), readOnlyColor);
shouldBe(backgroundColorOf('c2a'), readOnlyColor);
shouldBe(backgroundColorOf('c2b'), readOnlyColor);
p1.setAttribute("contenteditable", "false");
p2.setAttribute("contenteditable", "true");
// Check computed style after changing attribute.
shouldBe(backgroundColorOf('p1'), readOnlyColor);
shouldBe(backgroundColorOf('c1a'), readOnlyColor);
shouldBe(backgroundColorOf('c1b'), readOnlyColor);
shouldBe(backgroundColorOf('p2'), readWriteColor);
shouldBe(backgroundColorOf('c2a'), readWriteColor);
shouldBe(backgroundColorOf('c2b'), readWriteColor);
</script>
<!doctype html>
<style>
div:read-only, span:read-only { background-color: #ccf; }
div:read-write, span:read-write { background-color: #fcc; }
</style>
<div>Read-only</div>
<div>Read-only <span>Read-only</span></div>
<div>Read-only <span contenteditable="true">Read-write</span></div>
<div contenteditable="true">Read-write <span>Read-write</span></div>
<div contenteditable="true">Read-write <span contenteditable="false">Read-only</span></div>
<div contenteditable="true">Read-write <span contenteditable="false">Read-only <span>Read-only</span</span></div>
<div>Read-only <span contenteditable>Read-write</span></div>
<div>Read-only <span contenteditable>Read-write <span contenteditable="inherit">Read-write</span></span></div>
<div contenteditable>Read-write <span contenteditable="false">Read-only <span contenteditable="inherit">Read-only</span></span></div>
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<html> <html
<head> <head>
<link rel="stylesheet" href="resources/live-pseudo-selectors.css"> <link rel="stylesheet" href="resources/live-pseudo-selectors.css">
<script src="../../resources/js-test.js"></script> <script src="../../resources/js-test.js"></script>
......
...@@ -23,7 +23,7 @@ var elBackground = 'backgroundOf(el)'; ...@@ -23,7 +23,7 @@ var elBackground = 'backgroundOf(el)';
var invalidColor = 'rgb(255, 0, 0)'; var invalidColor = 'rgb(255, 0, 0)';
var normalColor = 'rgb(255, 255, 255)'; var normalColor = 'rgb(255, 255, 255)';
var disabledColor = 'rgb(0, 0, 0)'; var disabledColor = 'rgb(0, 0, 0)';
var readOnlyColor = 'rgb(0, 255, 0)'; var readOnlyColor = 'rgb(0, 255, 0)'
var validColor = 'rgb(0, 0, 255)'; var validColor = 'rgb(0, 0, 255)';
// -------------------------------- // --------------------------------
......
:invalid { background: rgb(255, 0, 0); } :invalid { background: rgb(255, 0, 0); }
:valid { background: rgb(0, 0, 255); } :valid { background: rgb(0, 0, 255); }
:disabled { background: black; } :disabled { background: black; }
input:read-only, textarea:read-only { background: rgb(0, 255, 0); } :read-only { background: rgb(0, 255, 0); }
input { background: white; } input { background: white; }
textarea { background: white; } textarea { background: white; }
...@@ -60,6 +60,7 @@ var elBackground = 'backgroundOf(el)'; ...@@ -60,6 +60,7 @@ var elBackground = 'backgroundOf(el)';
var invalidColor = 'rgb(255, 0, 0)'; var invalidColor = 'rgb(255, 0, 0)';
var normalColor = 'rgb(255, 255, 255)'; var normalColor = 'rgb(255, 255, 255)';
var disabledColor = 'rgb(0, 0, 0)'; var disabledColor = 'rgb(0, 0, 0)';
var readOnlyColor = 'rgb(0, 255, 0)'
var transparentColor = 'rgba(0, 0, 0, 0)'; var transparentColor = 'rgba(0, 0, 0, 0)';
var validColor = 'rgb(0, 0, 255)'; var validColor = 'rgb(0, 0, 255)';
......
...@@ -23,7 +23,7 @@ var elBackground = 'backgroundOf(el)'; ...@@ -23,7 +23,7 @@ var elBackground = 'backgroundOf(el)';
var invalidColor = 'rgb(255, 0, 0)'; var invalidColor = 'rgb(255, 0, 0)';
var normalColor = 'rgb(255, 255, 255)'; var normalColor = 'rgb(255, 255, 255)';
var disabledColor = 'rgb(0, 0, 0)'; var disabledColor = 'rgb(0, 0, 0)';
var readOnlyColor = 'rgb(0, 255, 0)'; var readOnlyColor = 'rgb(0, 255, 0)'
var validColor = 'rgb(0, 0, 255)'; var validColor = 'rgb(0, 0, 255)';
// -------------------------------- // --------------------------------
......
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<html> <html
<head> <head>
<link rel="stylesheet" href="resources/live-pseudo-selectors.css"> <link rel="stylesheet" href="resources/live-pseudo-selectors.css">
<script src="../../resources/js-test.js"></script> <script src="../../resources/js-test.js"></script>
......
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<html> <html
<head> <head>
<link rel="stylesheet" href="resources/live-pseudo-selectors.css"> <link rel="stylesheet" href="resources/live-pseudo-selectors.css">
<script src="../../resources/js-test.js"></script> <script src="../../resources/js-test.js"></script>
......
...@@ -921,25 +921,6 @@ void HTMLElement::defaultEventHandler(Event* event) ...@@ -921,25 +921,6 @@ void HTMLElement::defaultEventHandler(Event* event)
Element::defaultEventHandler(event); Element::defaultEventHandler(event);
} }
bool HTMLElement::matchesReadOnlyPseudoClass() const
{
return !matchesReadWritePseudoClass();
}
bool HTMLElement::matchesReadWritePseudoClass() const
{
const AtomicString& value = fastGetAttribute(contenteditableAttr);
if (!value.isNull()) {
if (value.isEmpty() || equalIgnoringCase(value, "true") || equalIgnoringCase(value, "plaintext-only"))
return true;
if (equalIgnoringCase(value, "false"))
return false;
// All other values should be treated as "inherit".
}
return parentElement() && parentElement()->rendererIsEditable();
}
void HTMLElement::handleKeypressEvent(KeyboardEvent* event) void HTMLElement::handleKeypressEvent(KeyboardEvent* event)
{ {
if (!document().settings() || !document().settings()->spatialNavigationEnabled() || !supportsFocus()) if (!document().settings() || !document().settings()->spatialNavigationEnabled() || !supportsFocus())
......
...@@ -88,9 +88,6 @@ public: ...@@ -88,9 +88,6 @@ public:
static const AtomicString& eventNameForAttributeName(const QualifiedName& attrName); static const AtomicString& eventNameForAttributeName(const QualifiedName& attrName);
virtual bool matchesReadOnlyPseudoClass() const OVERRIDE;
virtual bool matchesReadWritePseudoClass() const OVERRIDE;
protected: protected:
HTMLElement(const QualifiedName& tagName, Document&, ConstructionType); HTMLElement(const QualifiedName& tagName, Document&, ConstructionType);
......
...@@ -33,7 +33,6 @@ ...@@ -33,7 +33,6 @@
#include "core/frame/LocalFrame.h" #include "core/frame/LocalFrame.h"
#include "core/html/HTMLCollection.h" #include "core/html/HTMLCollection.h"
#include "core/html/HTMLDataListElement.h" #include "core/html/HTMLDataListElement.h"
#include "core/html/HTMLFormControlElement.h"
#include "core/html/HTMLInputElement.h" #include "core/html/HTMLInputElement.h"
#include "core/html/HTMLMeterElement.h" #include "core/html/HTMLMeterElement.h"
#include "core/html/HTMLOptionElement.h" #include "core/html/HTMLOptionElement.h"
...@@ -763,10 +762,9 @@ bool RenderTheme::isSpinUpButtonPartPressed(const RenderObject* o) const ...@@ -763,10 +762,9 @@ bool RenderTheme::isSpinUpButtonPartPressed(const RenderObject* o) const
bool RenderTheme::isReadOnlyControl(const RenderObject* o) const bool RenderTheme::isReadOnlyControl(const RenderObject* o) const
{ {
Node* node = o->node(); Node* node = o->node();
if (!node || !node->isElementNode() || !toElement(node)->isFormControlElement()) if (!node || !node->isElementNode())
return false; return false;
HTMLFormControlElement* element = toHTMLFormControlElement(node); return toElement(node)->matchesReadOnlyPseudoClass();
return element->isReadOnly();
} }
bool RenderTheme::isHovered(const RenderObject* o) const bool RenderTheme::isHovered(const RenderObject* o) const
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment