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() const 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