1 // Copyright (c) 2013 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.
5 #include "chrome/renderer/validation_message_agent.h"
7 #include "base/i18n/rtl.h"
8 #include "chrome/common/validation_message_messages.h"
9 #include "content/public/renderer/render_view.h"
10 #include "third_party/WebKit/public/web/WebView.h"
12 ValidationMessageAgent::ValidationMessageAgent(content::RenderView
* render_view
)
13 : content::RenderViewObserver(render_view
)
15 render_view
->GetWebView()->setValidationMessageClient(this);
18 ValidationMessageAgent::~ValidationMessageAgent() {}
20 void ValidationMessageAgent::showValidationMessage(
21 const WebKit::WebRect
& anchor_in_root_view
,
22 const WebKit::WebString
& main_text
,
23 const WebKit::WebString
& sub_text
,
24 WebKit::WebTextDirection hint
) {
25 string16 wrapped_main_text
= main_text
;
26 string16 wrapped_sub_text
= sub_text
;
27 if (hint
== WebKit::WebTextDirectionLeftToRight
) {
29 = base::i18n::GetDisplayStringInLTRDirectionality(wrapped_main_text
);
30 if (!wrapped_sub_text
.empty()) {
32 = base::i18n::GetDisplayStringInLTRDirectionality(wrapped_sub_text
);
34 } else if (hint
== WebKit::WebTextDirectionRightToLeft
35 && !base::i18n::IsRTL()) {
36 base::i18n::WrapStringWithRTLFormatting(&wrapped_main_text
);
37 if (!wrapped_sub_text
.empty()) {
38 base::i18n::WrapStringWithRTLFormatting(&wrapped_sub_text
);
42 Send(new ValidationMessageMsg_ShowValidationMessage(
43 routing_id(), anchor_in_root_view
, wrapped_main_text
, wrapped_sub_text
));
46 void ValidationMessageAgent::hideValidationMessage() {
47 Send(new ValidationMessageMsg_HideValidationMessage());
50 void ValidationMessageAgent::moveValidationMessage(
51 const WebKit::WebRect
& anchor_in_root_view
) {
52 Send(new ValidationMessageMsg_MoveValidationMessage(
53 routing_id(), anchor_in_root_view
));