blob: ccad808c64b5883496096f6197a05271d52ea49f (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
|
// Copyright 2012 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.
#ifndef CHROME_BROWSER_UI_SEARCH_INSTANT_OVERLAY_MODEL_H_
#define CHROME_BROWSER_UI_SEARCH_INSTANT_OVERLAY_MODEL_H_
#include "base/basictypes.h"
#include "base/observer_list.h"
#include "chrome/common/instant_types.h"
#include "chrome/common/search_types.h"
class InstantController;
class InstantOverlayModelObserver;
namespace content {
class WebContents;
}
// Holds state that is important to any views concerned with visibility and
// layout of the Instant overlay.
class InstantOverlayModel {
public:
explicit InstantOverlayModel(InstantController* controller);
~InstantOverlayModel();
// InstantOverlayModel only uses Mode::mode internally. Other parts of Mode,
// such as Mode::origin, may have arbitrary values, and should be ignored.
const chrome::search::Mode& mode() const { return mode_; }
int height() const { return height_; }
InstantSizeUnits height_units() const { return height_units_; }
void SetOverlayState(const chrome::search::Mode& mode,
int height,
InstantSizeUnits height_units);
void SetOverlayContents(content::WebContents* overlay_contents);
content::WebContents* GetOverlayContents() const;
// Add and remove observers.
void AddObserver(InstantOverlayModelObserver* observer);
void RemoveObserver(InstantOverlayModelObserver* observer);
private:
chrome::search::Mode mode_;
int height_;
InstantSizeUnits height_units_;
// Weak. Remembers the last set overlay contents to detect changes. Actual
// overlay contents is fetched from the |controller_| as this may not always
// reflect the actual overlay in effect.
content::WebContents* overlay_contents_;
// Weak. The controller currently holds some model state.
// TODO(dhollowa): Remove this, transfer all state to InstantOverlayModel.
InstantController* const controller_;
// Observers.
ObserverList<InstantOverlayModelObserver> observers_;
DISALLOW_COPY_AND_ASSIGN(InstantOverlayModel);
};
#endif // CHROME_BROWSER_UI_SEARCH_INSTANT_OVERLAY_MODEL_H_
|