// Copyright 2018 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 SERVICES_CONTENT_NAVIGABLE_CONTENTS_DELEGATE_H_ #define SERVICES_CONTENT_NAVIGABLE_CONTENTS_DELEGATE_H_ #include "services/content/public/mojom/navigable_contents.mojom.h" #include "ui/gfx/native_widget_types.h" class GURL; namespace content { // A virtual interface which must be implemented as a backing for // NavigableContentsImpl instances. // // This is the primary interface by which the Content Service delegates // NavigableContentsImpl behavior out to WebContentsImpl in src/content. As such // it is a transitional API which will be removed as soon as WebContentsImpl // itself can be fully migrated into Content Service. // // Each instance of this interface is constructed by the ContentServiceDelegate // implementation and owned by a NavigableContentsImpl. class NavigableContentsDelegate { public: virtual ~NavigableContentsDelegate() {} // Returns a NativeView that can be embedded into a client application's // window tree to display the web contents navigated by the delegate's // NavigableContents. virtual gfx::NativeView GetNativeView() = 0; // Navigates the content object to a new URL. virtual void Navigate(const GURL& url, mojom::NavigateParamsPtr params) = 0; // Attempts to navigate the web contents back in its history stack. The // supplied |callback| is run to indicate success/failure of the attempt. The // navigation attempt will fail if the history stack is empty. virtual void GoBack( content::mojom::NavigableContents::GoBackCallback callback) = 0; // Attempts to transfer global input focus to the navigated contents if they // have an active visual representation. virtual void Focus() = 0; // Similar to above but for use specifically when UI element traversal is // being done via Tab-key cycling or a similar mechanism. virtual void FocusThroughTabTraversal(bool reverse) = 0; }; } // namespace content #endif // SERVICES_CONTENT_NAVIGABLE_CONTENTS_DELEGATE_H_