status_bubble.h revision 21d179b334e59e9a3bfcaed4c4430bef1bc5759d
1// Copyright (c) 2010 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_STATUS_BUBBLE_H_
6#define CHROME_BROWSER_STATUS_BUBBLE_H_
7#pragma once
8
9#include "base/string16.h"
10
11class GURL;
12namespace gfx {
13class Point;
14}
15
16////////////////////////////////////////////////////////////////////////////////
17// StatusBubble interface
18//  An interface implemented by an object providing the status display area of
19//  the browser window.
20//
21class StatusBubble {
22 public:
23  // On hover, expand status bubble to fit long URL after this delay.
24  static const int kExpandHoverDelay = 1600;
25
26  virtual ~StatusBubble() {}
27
28  // Sets the bubble contents to a specific string and causes the bubble
29  // to display immediately. Subsequent empty SetURL calls (typically called
30  // when the cursor exits a link) will set the status bubble back to its
31  // status text. To hide the status bubble again, either call SetStatus
32  // with an empty string, or call Hide().
33  virtual void SetStatus(const string16& status) = 0;
34
35  // Sets the bubble text to a URL - if given a non-empty URL, this will cause
36  // the bubble to fade in and remain open until given an empty URL or until
37  // the Hide() method is called. languages is the value of Accept-Language
38  // to determine what characters are understood by a user.
39  virtual void SetURL(const GURL& url, const string16& languages) = 0;
40
41  // Skip the fade and instant-hide the bubble.
42  virtual void Hide() = 0;
43
44  // Called when the user's mouse has moved over web content. This is used to
45  // determine when the status area should move out of the way of the user's
46  // mouse. This may be windows specific pain due to the way messages are
47  // processed for child HWNDs.  |position| is the absolute position of the
48  // pointer, and |left_content| is true if the mouse just left the content
49  // area.
50  virtual void MouseMoved(const gfx::Point& position, bool left_content) = 0;
51
52  // Called when the download shelf becomes visible or invisible.
53  // This is used by to ensure that the status bubble does not obscure
54  // the download shelf, when it is visible.
55  virtual void UpdateDownloadShelfVisibility(bool visible) = 0;
56};
57
58#endif  // CHROME_BROWSER_STATUS_BUBBLE_H_
59