blob: c729534f7c704bac2c1f114be851706abeceffdd [file] [log] [blame]
// Copyright (c) 2013 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "chrome/renderer/validation_message_agent.h"
#include "base/i18n/rtl.h"
#include "chrome/common/validation_message_messages.h"
#include "content/public/renderer/render_view.h"
#include "third_party/WebKit/public/web/WebView.h"
ValidationMessageAgent::ValidationMessageAgent(content::RenderView* render_view)
: content::RenderViewObserver(render_view)
{
render_view->GetWebView()->setValidationMessageClient(this);
}
ValidationMessageAgent::~ValidationMessageAgent() {}
void ValidationMessageAgent::showValidationMessage(
const blink::WebRect& anchor_in_root_view,
const blink::WebString& main_text,
const blink::WebString& sub_text,
blink::WebTextDirection hint) {
string16 wrapped_main_text = main_text;
string16 wrapped_sub_text = sub_text;
if (hint == blink::WebTextDirectionLeftToRight) {
wrapped_main_text
= base::i18n::GetDisplayStringInLTRDirectionality(wrapped_main_text);
if (!wrapped_sub_text.empty()) {
wrapped_sub_text
= base::i18n::GetDisplayStringInLTRDirectionality(wrapped_sub_text);
}
} else if (hint == blink::WebTextDirectionRightToLeft
&& !base::i18n::IsRTL()) {
base::i18n::WrapStringWithRTLFormatting(&wrapped_main_text);
if (!wrapped_sub_text.empty()) {
base::i18n::WrapStringWithRTLFormatting(&wrapped_sub_text);
}
}
Send(new ValidationMessageMsg_ShowValidationMessage(
routing_id(), anchor_in_root_view, wrapped_main_text, wrapped_sub_text));
}
void ValidationMessageAgent::hideValidationMessage() {
Send(new ValidationMessageMsg_HideValidationMessage());
}
void ValidationMessageAgent::moveValidationMessage(
const blink::WebRect& anchor_in_root_view) {
Send(new ValidationMessageMsg_MoveValidationMessage(
routing_id(), anchor_in_root_view));
}