blob: 05c911b1e6d4958b4dce9b3af688e33bfc06bd2e [file] [log] [blame]
Torne (Richard Coles)5c87bf82012-11-14 11:46:17 +00001/*
2 * Copyright (C) 2012 Google Inc. All rights reserved.
3 *
4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions
6 * are met:
7 * 1. Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer.
9 * 2. Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the
11 * documentation and/or other materials provided with the distribution.
12 *
13 * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND
14 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
16 * ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE
17 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
18 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
19 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
20 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
21 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
22 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
23 * SUCH DAMAGE.
24 */
25
26#ifndef ValidationMessageClientImpl_h
27#define ValidationMessageClientImpl_h
28
Torne (Richard Coles)53e740f2013-05-09 18:38:43 +010029#include "core/page/ValidationMessageClient.h"
Torne (Richard Coles)1e202182013-10-18 15:46:42 +010030#include "platform/Timer.h"
31#include "platform/geometry/IntRect.h"
Torne (Richard Coles)93ac45c2013-05-29 14:40:20 +010032#include "wtf/text/WTFString.h"
33
34namespace WebCore {
35class FrameView;
36}
Torne (Richard Coles)5c87bf82012-11-14 11:46:17 +000037
Torne (Richard Coles)51b29062013-11-28 11:56:03 +000038namespace blink {
Torne (Richard Coles)5c87bf82012-11-14 11:46:17 +000039
Torne (Richard Coles)93ac45c2013-05-29 14:40:20 +010040class WebViewImpl;
Torne (Richard Coles)5c87bf82012-11-14 11:46:17 +000041
Torne (Richard Coles)09380292014-02-21 12:17:33 +000042class ValidationMessageClientImpl FINAL : public WebCore::ValidationMessageClient {
Torne (Richard Coles)5c87bf82012-11-14 11:46:17 +000043public:
Torne (Richard Coles)09380292014-02-21 12:17:33 +000044 static PassOwnPtr<ValidationMessageClientImpl> create(WebViewImpl&);
Torne (Richard Coles)5c87bf82012-11-14 11:46:17 +000045 virtual ~ValidationMessageClientImpl();
46
47private:
Torne (Richard Coles)09380292014-02-21 12:17:33 +000048 ValidationMessageClientImpl(WebViewImpl&);
Torne (Richard Coles)93ac45c2013-05-29 14:40:20 +010049 void checkAnchorStatus(WebCore::Timer<ValidationMessageClientImpl>*);
50 WebCore::FrameView* currentView();
Torne (Richard Coles)5c87bf82012-11-14 11:46:17 +000051
52 virtual void showValidationMessage(const WebCore::Element& anchor, const String& message) OVERRIDE;
53 virtual void hideValidationMessage(const WebCore::Element& anchor) OVERRIDE;
54 virtual bool isValidationMessageVisible(const WebCore::Element& anchor) OVERRIDE;
Torne (Richard Coles)521d96e2013-06-19 11:58:24 +010055 virtual void documentDetached(const WebCore::Document&) OVERRIDE;
Torne (Richard Coles)5c87bf82012-11-14 11:46:17 +000056
Torne (Richard Coles)93ac45c2013-05-29 14:40:20 +010057 WebViewImpl& m_webView;
Torne (Richard Coles)5c87bf82012-11-14 11:46:17 +000058 const WebCore::Element* m_currentAnchor;
Torne (Richard Coles)93ac45c2013-05-29 14:40:20 +010059 String m_message;
60 WebCore::IntRect m_lastAnchorRectInScreen;
61 float m_lastPageScaleFactor;
62 double m_finishTime;
Torne (Richard Coles)5c87bf82012-11-14 11:46:17 +000063 WebCore::Timer<ValidationMessageClientImpl> m_timer;
64};
65
66}
67
68#endif