1// Copyright 2014 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 EXTENSIONS_BROWSER_GUEST_VIEW_WEB_VIEW_TEST_GUEST_VIEW_MANAGER_H_
6#define EXTENSIONS_BROWSER_GUEST_VIEW_WEB_VIEW_TEST_GUEST_VIEW_MANAGER_H_
7
8#include "content/public/test/test_utils.h"
9#include "extensions/browser/guest_view/guest_view_manager.h"
10#include "extensions/browser/guest_view/guest_view_manager_factory.h"
11
12namespace extensions {
13
14class TestGuestViewManager : public GuestViewManager {
15 public:
16  explicit TestGuestViewManager(content::BrowserContext* context);
17  virtual ~TestGuestViewManager();
18
19  content::WebContents* WaitForGuestCreated();
20  void WaitForGuestDeleted();
21
22 private:
23  // GuestViewManager override:
24  virtual void AddGuest(int guest_instance_id,
25                        content::WebContents* guest_web_contents) OVERRIDE;
26  virtual void RemoveGuest(int guest_instance_id) OVERRIDE;
27
28  bool seen_guest_removed_;
29  content::WebContents* web_contents_;
30  scoped_refptr<content::MessageLoopRunner> created_message_loop_runner_;
31  scoped_refptr<content::MessageLoopRunner> deleted_message_loop_runner_;
32
33  DISALLOW_COPY_AND_ASSIGN(TestGuestViewManager);
34};
35
36// Test factory for creating test instances of GuestViewManager.
37class TestGuestViewManagerFactory : public GuestViewManagerFactory {
38 public:
39  TestGuestViewManagerFactory();
40  virtual ~TestGuestViewManagerFactory();
41
42  virtual GuestViewManager* CreateGuestViewManager(
43      content::BrowserContext* context) OVERRIDE;
44
45  TestGuestViewManager* GetManager(content::BrowserContext* context);
46
47 private:
48  TestGuestViewManager* test_guest_view_manager_;
49
50  DISALLOW_COPY_AND_ASSIGN(TestGuestViewManagerFactory);
51};
52
53}  // namespace extensions
54
55#endif  // EXTENSIONS_BROWSER_GUEST_VIEW_WEB_VIEW_TEST_GUEST_VIEW_MANAGER_H_
56