validation_message_bubble_delegate.h revision a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7
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.
4
5#ifndef CHROME_BROWSER_UI_VIEWS_VALIDATION_MESSAGE_BUBBLE_DELEGATE_H_
6#define CHROME_BROWSER_UI_VIEWS_VALIDATION_MESSAGE_BUBBLE_DELEGATE_H_
7
8#include "ui/views/bubble/bubble_delegate.h"
9
10// A BubbleDelegateView implementation for form validation message bubble.
11// This class is exposed for testing.
12class ValidationMessageBubbleDelegate : public views::BubbleDelegateView {
13 public:
14  // An interface to observe the widget closing.
15  class Observer {
16   public:
17    virtual void WindowClosing() = 0;
18
19   protected:
20    virtual ~Observer() {}
21  };
22
23  static const int kWindowMinWidth;
24  static const int kWindowMaxWidth;
25
26  ValidationMessageBubbleDelegate(const gfx::Rect& anchor_in_screen,
27                                  const base::string16& main_text,
28                                  const base::string16& sub_text,
29                                  Observer* observer);
30  virtual ~ValidationMessageBubbleDelegate();
31
32  void Close();
33  void SetPositionRelativeToAnchor(const gfx::Rect& anchor_in_screen);
34
35  // BubbleDelegateView overrides:
36  virtual gfx::Size GetPreferredSize() OVERRIDE;
37  virtual void DeleteDelegate() OVERRIDE;
38  virtual void WindowClosing() OVERRIDE;
39
40 private:
41  Observer* observer_;
42  int width_;
43  int height_;
44
45  DISALLOW_COPY_AND_ASSIGN(ValidationMessageBubbleDelegate);
46};
47
48#endif  // CHROME_BROWSER_UI_VIEWS_VALIDATION_MESSAGE_BUBBLE_DELEGATE_H_
49