13345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick// Copyright (c) 2010 The Chromium Authors. All rights reserved.
2c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Use of this source code is governed by a BSD-style license that can be
3c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// found in the LICENSE file.
4c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
5c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// This implements a browser-side endpoint for ChromeFrame UI automation
6c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// activity. The client-side endpoint is implemented by
7c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// ChromeFrameAutomationClient.
8c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// The entire lifetime of this object should be contained within that of
9c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// the BrowserProcess
10c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
11c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#ifndef CHROME_BROWSER_AUTOMATION_CHROME_FRAME_AUTOMATION_PROVIDER_H_
12c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#define CHROME_BROWSER_AUTOMATION_CHROME_FRAME_AUTOMATION_PROVIDER_H_
133345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick#pragma once
14c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
15c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "base/basictypes.h"
16c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "chrome/browser/automation/automation_provider.h"
17c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
18c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass Profile;
19c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
20c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// This class services automation IPC requests coming in from ChromeFrame
21c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// instances.
22c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass ChromeFrameAutomationProvider : public AutomationProvider {
23c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch public:
24c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  explicit ChromeFrameAutomationProvider(Profile* profile);
25c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
26c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // IPC::Channel::Listener overrides.
2721d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  virtual bool OnMessageReceived(const IPC::Message& message);
28c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
29c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch protected:
30c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // This function is called when we receive an invalid message type.
31c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  virtual void OnUnhandledMessage(const IPC::Message& message);
32c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
33c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // Returns true if the message received is a valid chrome frame message.
34c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  bool IsValidMessage(uint32 type);
35c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
36c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch private:
37c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  DISALLOW_COPY_AND_ASSIGN(ChromeFrameAutomationProvider);
38c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch};
39c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
40c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#endif  // CHROME_BROWSER_AUTOMATION_CHROME_FRAME_AUTOMATION_PROVIDER_H_
41c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
42