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 CONTENT_BROWSER_BROWSER_PLUGIN_TEST_BROWSER_PLUGIN_GUEST_MANAGER_H_
6#define CONTENT_BROWSER_BROWSER_PLUGIN_TEST_BROWSER_PLUGIN_GUEST_MANAGER_H_
7
8#include "base/compiler_specific.h"
9#include "base/gtest_prod_util.h"
10#include "content/browser/browser_plugin/browser_plugin_guest_manager.h"
11#include "content/public/test/test_utils.h"
12
13FORWARD_DECLARE_TEST(BrowserPluginHostTest, ReloadEmbedder);
14
15namespace content {
16
17class WebContentsImpl;
18
19// Test class for BrowserPluginGuestManager.
20//
21// Provides utilities to wait for certain state/messages in
22// BrowserPluginGuestManager to be used in tests.
23class TestBrowserPluginGuestManager : public BrowserPluginGuestManager {
24 public:
25  typedef BrowserPluginGuestManager::GuestInstanceMap GuestInstanceMap;
26
27  TestBrowserPluginGuestManager();
28  virtual ~TestBrowserPluginGuestManager();
29
30  const GuestInstanceMap& guest_web_contents_for_testing() const {
31    return guest_web_contents_by_instance_id_;
32  }
33
34  // Waits until at least one guest is added to the guest manager.
35  void WaitForGuestAdded();
36
37 private:
38  // BrowserPluginHostTest.ReloadEmbedder needs access to the GuestInstanceMap.
39  FRIEND_TEST_ALL_PREFIXES(BrowserPluginHostTest, ReloadEmbedder);
40
41  // Overriden to intercept in test.
42  virtual void AddGuest(int instance_id,
43                        WebContentsImpl* guest_web_contents) OVERRIDE;
44
45  scoped_refptr<MessageLoopRunner> message_loop_runner_;
46  DISALLOW_COPY_AND_ASSIGN(TestBrowserPluginGuestManager);
47};
48
49} // namespace content
50
51#endif  // CONTENT_BROWSER_BROWSER_PLUGIN_TEST_BROWSER_PLUGIN_GUEST_MANAGER_H_
52