17d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)// Copyright (c) 2013 The Chromium Authors. All rights reserved.
290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)// found in the LICENSE file.
490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#ifndef CHROME_BROWSER_RENDERER_HOST_PEPPER_PEPPER_FLASH_DRM_HOST_H_
690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#define CHROME_BROWSER_RENDERER_HOST_PEPPER_PEPPER_FLASH_DRM_HOST_H_
790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#include <string>
990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
1090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#include "base/memory/weak_ptr.h"
1190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#include "chrome/browser/renderer_host/pepper/device_id_fetcher.h"
1290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#include "ppapi/host/host_message_context.h"
1390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#include "ppapi/host/resource_host.h"
1490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
1590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)namespace content {
1690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)class BrowserPpapiHost;
1790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)}
1890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
1990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)namespace IPC {
2090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)class Message;
2190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)}
2290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
2390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)namespace chrome {
247dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdochclass MonitorFinder;
2590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
2690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)class PepperFlashDRMHost : public ppapi::host::ResourceHost {
2790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) public:
2890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  PepperFlashDRMHost(content::BrowserPpapiHost* host,
2990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)                     PP_Instance instance,
3090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)                     PP_Resource resource);
3190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  virtual ~PepperFlashDRMHost();
3290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
3390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  // ResourceHost override.
3490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  virtual int32_t OnResourceMessageReceived(
3590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)      const IPC::Message& msg,
3690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)      ppapi::host::HostMessageContext* context) OVERRIDE;
3790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
3890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) private:
3990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  // IPC message handler.
4090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  int32_t OnHostMsgGetDeviceID(ppapi::host::HostMessageContext* context);
417d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  int32_t OnHostMsgGetHmonitor(ppapi::host::HostMessageContext* context);
42f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  int32_t OnHostMsgMonitorIsExternal(ppapi::host::HostMessageContext* context);
4390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
4490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  // Called by the fetcher when the device ID was retrieved, or the empty string
4590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  // on error.
4690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  void GotDeviceID(ppapi::host::ReplyMessageContext reply_context,
474e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)                   const std::string& id,
484e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)                   int32_t result);
4990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
5090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  scoped_refptr<DeviceIDFetcher> fetcher_;
517dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  scoped_refptr<MonitorFinder> monitor_finder_;
5290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
5390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  base::WeakPtrFactory<PepperFlashDRMHost> weak_factory_;
5490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
5590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  DISALLOW_COPY_AND_ASSIGN(PepperFlashDRMHost);
5690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)};
5790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
5890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)}  // namespace chrome
5990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
6090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#endif  // CHROME_BROWSER_RENDERER_HOST_PEPPER_PEPPER_FLASH_DRM_HOST_H_
61