blob: e2b9c7d1569ee7f07c9da7a2e12bde04b626cc71 [file] [log] [blame]
// Copyright 2013 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 CONTENT_PUBLIC_BROWSER_BROWSER_PLUGIN_GUEST_DELEGATE_H_
#define CONTENT_PUBLIC_BROWSER_BROWSER_PLUGIN_GUEST_DELEGATE_H_
#include "base/callback_forward.h"
#include "base/process/kill.h"
#include "base/strings/string16.h"
#include "base/values.h"
#include "content/common/content_export.h"
#include "content/public/common/browser_plugin_permission_type.h"
#include "ui/gfx/size.h"
#include "url/gurl.h"
namespace content {
struct NativeWebKeyboardEvent;
// Objects implement this interface to get notified about changes in the guest
// WebContents and to provide necessary functionality.
class CONTENT_EXPORT BrowserPluginGuestDelegate {
public:
virtual ~BrowserPluginGuestDelegate() {}
// Add a message to the console.
virtual void AddMessageToConsole(int32 level,
const string16& message,
int32 line_no,
const string16& source_id) {}
// Request the delegate to close this guest, and do whatever cleanup it needs
// to do.
virtual void Close() {}
// Informs the delegate that the guest render process is gone. |status|
// indicates whether the guest was killed, crashed, or was terminated
// gracefully.
virtual void GuestProcessGone(base::TerminationStatus status) {}
// Informs the delegate that the embedder has been destroyed.
virtual void EmbedderDestroyed() {}
virtual bool HandleKeyboardEvent(const NativeWebKeyboardEvent& event);
virtual bool IsDragAndDropEnabled();
// Returns whether the user agent for the guest is being overridden.
virtual bool IsOverridingUserAgent() const;
// Notification that a load in the guest resulted in abort. Note that |url|
// may be invalid.
virtual void LoadAbort(bool is_top_level,
const GURL& url,
const std::string& error_type) {}
// Notification that the page has made some progress loading. |progress| is a
// value between 0.0 (nothing loaded) and 1.0 (page loaded completely).
virtual void LoadProgressed(double progress) {}
// Notification that the guest is no longer hung.
virtual void RendererResponsive() {}
// Notification that the guest is hung.
virtual void RendererUnresponsive() {}
typedef base::Callback<void(bool /* allow */,
const std::string& /* user_input */)>
PermissionResponseCallback;
// Request permission from the delegate to perform an action of the provided
// |permission_type|. Details of the permission request are found in
// |request_info|. A |callback| is provided to make the decision.
// Returns whether the delegate has, or will handle the permission request.
virtual bool RequestPermission(
BrowserPluginPermissionType permission_type,
const base::DictionaryValue& request_info,
const PermissionResponseCallback& callback);
// Notifies that the content size of the guest has changed in autosize mode.
virtual void SizeChanged(const gfx::Size& old_size,
const gfx::Size& new_size) {}
};
} // namespace content
#endif // CONTENT_PUBLIC_BROWSER_BROWSER_PLUGIN_GUEST_DELEGATE_H_