Update To 11.40.268.0
[platform/framework/web/crosswalk.git] / src / third_party / WebKit / Source / core / html / HTMLFormControlElementTest.cpp
1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "config.h"
6 #include "core/html/HTMLFormControlElement.h"
7
8 #include "core/frame/FrameView.h"
9 #include "core/html/HTMLDocument.h"
10 #include "core/html/HTMLInputElement.h"
11 #include "core/loader/EmptyClients.h"
12 #include "core/rendering/RenderObject.h"
13 #include "core/testing/DummyPageHolder.h"
14 #include <gtest/gtest.h>
15
16 namespace blink {
17
18 class HTMLFormControlElementTest : public ::testing::Test {
19 protected:
20     virtual void SetUp() override;
21
22     DummyPageHolder& page() const { return *m_dummyPageHolder; }
23     HTMLDocument& document() const { return *m_document; }
24
25 private:
26     OwnPtr<DummyPageHolder> m_dummyPageHolder;
27     RefPtrWillBePersistent<HTMLDocument> m_document;
28 };
29
30 void HTMLFormControlElementTest::SetUp()
31 {
32     Page::PageClients pageClients;
33     fillWithEmptyClients(pageClients);
34     m_dummyPageHolder = DummyPageHolder::create(IntSize(800, 600), &pageClients);
35
36     m_document = toHTMLDocument(&m_dummyPageHolder->document());
37     m_document->setMimeType("text/html");
38     m_document->setCharset("utf-8");
39 }
40
41 TEST_F(HTMLFormControlElementTest, customValidationMessageTextDirection)
42 {
43     document().documentElement()->setInnerHTML("<body><input required id=input></body>", ASSERT_NO_EXCEPTION);
44     document().view()->updateLayoutAndStyleIfNeededRecursive();
45
46     HTMLInputElement* input = toHTMLInputElement(document().getElementById("input"));
47     input->setCustomValidity(String::fromUTF8("\xD8\xB9\xD8\xB1\xD8\xA8\xD9\x89"));
48     input->setAttribute(HTMLNames::titleAttr, AtomicString::fromUTF8("\xD8\xB9\xD8\xB1\xD8\xA8\xD9\x89"));
49
50     String message = input->validationMessage().stripWhiteSpace();
51     String subMessage = String();
52     TextDirection messageDir = RTL;
53     TextDirection subMessageDir = LTR;
54
55     input->findCustomValidationMessageTextDirection(message, messageDir, subMessage, subMessageDir);
56     EXPECT_EQ(RTL, messageDir);
57     EXPECT_EQ(LTR, subMessageDir);
58
59     input->renderer()->style()->setDirection(RTL);
60     input->findCustomValidationMessageTextDirection(message, messageDir, subMessage, subMessageDir);
61     EXPECT_EQ(RTL, messageDir);
62     EXPECT_EQ(RTL, subMessageDir);
63
64     input->setCustomValidity(String::fromUTF8("Main message."));
65     message = input->validationMessage().stripWhiteSpace();
66     input->findCustomValidationMessageTextDirection(message, messageDir, subMessage, subMessageDir);
67     EXPECT_EQ(LTR, messageDir);
68     EXPECT_EQ(RTL, subMessageDir);
69 }
70
71 }