| // 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_export.h" |
| |
| namespace headless { |
| class HeadlessDevToolsClient; |
| |
| // A target which can be controlled and inspected using DevTools. |
| class HEADLESS_EXPORT HeadlessDevToolsTarget { |
| public: |
| HeadlessDevToolsTarget() {} |
| 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. If |
| // the target already has a client attached, AttachClient will return false. |
| // ForceAttachClient will detach any existing connection before attaching |
| // |client|. |
| // Note that currently also only one client may be attached to a single target |
| // at a time. |
| // |
| // |client| must outlive this target. |
| virtual bool AttachClient(HeadlessDevToolsClient* client) = 0; |
| virtual void ForceAttachClient(HeadlessDevToolsClient* client) = 0; |
| virtual void DetachClient(HeadlessDevToolsClient* client) = 0; |
| |
| // Returns true if a devtools client is attached. |
| virtual bool IsAttached() = 0; |
| |
| private: |
| DISALLOW_COPY_AND_ASSIGN(HeadlessDevToolsTarget); |
| }; |
| |
| } // namespace headless |
| |
| #endif // HEADLESS_PUBLIC_HEADLESS_DEVTOOLS_TARGET_H_ |