// Copyright 2016 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef HEADLESS_PUBLIC_HEADLESS_DEVTOOLS_TARGET_H_ #define HEADLESS_PUBLIC_HEADLESS_DEVTOOLS_TARGET_H_ #include "base/macros.h" #include "headless/public/headless_devtools_channel.h" #include "headless/public/headless_devtools_client.h" #include "headless/public/headless_export.h" namespace headless { // A target which can be controlled and inspected using DevTools. // TODO(dgozman): remove this class once all clients switch. class HEADLESS_EXPORT HeadlessDevToolsTarget { public: virtual ~HeadlessDevToolsTarget() {} // Attach or detach a client to this target. A client must be attached in // order to send commands or receive notifications from the target. // // A single client may be attached to at most one target at a time. // |client| must outlive this target. virtual void AttachClient(HeadlessDevToolsClient* client) = 0; virtual void DetachClient(HeadlessDevToolsClient* client) = 0; // Returns true if a devtools client is attached. virtual bool IsAttached() = 0; }; } // namespace headless #endif // HEADLESS_PUBLIC_HEADLESS_DEVTOOLS_TARGET_H_