1ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// Copyright (c) 2011 The Chromium Authors. All rights reserved.
2731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick// Use of this source code is governed by a BSD-style license that can be
3731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick// found in the LICENSE file.
4731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick
5731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick#ifndef CHROME_BROWSER_INSTANT_INSTANT_LOADER_DELEGATE_H_
6731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick#define CHROME_BROWSER_INSTANT_INSTANT_LOADER_DELEGATE_H_
7731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick#pragma once
8731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick
9731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick#include "base/string16.h"
10ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "chrome/common/instant_types.h"
11731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick
12731df977c0511bca2206b5f333555b1205ff1f43Iain Merrickclass GURL;
13731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick
14731df977c0511bca2206b5f333555b1205ff1f43Iain Merricknamespace gfx {
15731df977c0511bca2206b5f333555b1205ff1f43Iain Merrickclass Rect;
16731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick}
17731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick
18731df977c0511bca2206b5f333555b1205ff1f43Iain Merrickclass InstantLoader;
19731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick
20731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick// InstantLoader's delegate. This interface is implemented by InstantController.
21731df977c0511bca2206b5f333555b1205ff1f43Iain Merrickclass InstantLoaderDelegate {
22731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick public:
23ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  // Invoked when the status (either http_status_ok or ready) has changed.
24ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  virtual void InstantStatusChanged(InstantLoader* loader) = 0;
25731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick
26731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick  // Invoked when the loader has suggested text.
27ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  virtual void SetSuggestedTextFor(
28ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen      InstantLoader* loader,
29ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen      const string16& text,
30ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen      InstantCompleteBehavior behavior) = 0;
31731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick
32731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick  // Returns the bounds of instant.
33731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick  virtual gfx::Rect GetInstantBounds() = 0;
34731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick
35731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick  // Returns true if instant should be committed on mouse up.
36731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick  virtual bool ShouldCommitInstantOnMouseUp() = 0;
37731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick
38731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick  // Invoked when the the loader should be committed.
39731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick  virtual void CommitInstantLoader(InstantLoader* loader) = 0;
40731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick
41731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick  // Invoked if the loader was created with the intention that the site supports
42201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch  // instant, but it turned out the site doesn't support instant.
43201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch  virtual void InstantLoaderDoesntSupportInstant(InstantLoader* loader) = 0;
44201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch
45201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch  // Adds the specified url to the set of urls instant won't prefetch for.
46201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch  virtual void AddToBlacklist(InstantLoader* loader, const GURL& url) = 0;
47731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick
48731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick protected:
49731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick  virtual ~InstantLoaderDelegate() {}
50731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick};
51731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick
52731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick#endif  // CHROME_BROWSER_INSTANT_INSTANT_LOADER_DELEGATE_H_
53