| Index: extensions/browser/guest_view/web_view/web_view_guest.h
|
| diff --git a/extensions/browser/guest_view/web_view/web_view_guest.h b/extensions/browser/guest_view/web_view/web_view_guest.h
|
| deleted file mode 100644
|
| index a6a9206706c6e0680827b291c60b4a1145a1f49e..0000000000000000000000000000000000000000
|
| --- a/extensions/browser/guest_view/web_view/web_view_guest.h
|
| +++ /dev/null
|
| @@ -1,363 +0,0 @@
|
| -// Copyright 2014 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 EXTENSIONS_BROWSER_GUEST_VIEW_WEB_VIEW_WEB_VIEW_GUEST_H_
|
| -#define EXTENSIONS_BROWSER_GUEST_VIEW_WEB_VIEW_WEB_VIEW_GUEST_H_
|
| -
|
| -#include <vector>
|
| -
|
| -#include "base/observer_list.h"
|
| -#include "content/public/browser/javascript_dialog_manager.h"
|
| -#include "content/public/browser/notification_observer.h"
|
| -#include "content/public/browser/notification_registrar.h"
|
| -#include "extensions/browser/guest_view/guest_view.h"
|
| -#include "extensions/browser/guest_view/web_view/javascript_dialog_helper.h"
|
| -#include "extensions/browser/guest_view/web_view/web_view_find_helper.h"
|
| -#include "extensions/browser/guest_view/web_view/web_view_guest_delegate.h"
|
| -#include "extensions/browser/guest_view/web_view/web_view_permission_helper.h"
|
| -#include "extensions/browser/guest_view/web_view/web_view_permission_types.h"
|
| -#include "extensions/browser/script_executor.h"
|
| -
|
| -namespace blink {
|
| -struct WebFindOptions;
|
| -} // nanespace blink
|
| -
|
| -namespace extensions {
|
| -
|
| -class WebViewInternalFindFunction;
|
| -
|
| -// A WebViewGuest provides the browser-side implementation of the <webview> API
|
| -// and manages the dispatch of <webview> extension events. WebViewGuest is
|
| -// created on attachment. That is, when a guest WebContents is associated with
|
| -// a particular embedder WebContents. This happens on either initial navigation
|
| -// or through the use of the New Window API, when a new window is attached to
|
| -// a particular <webview>.
|
| -class WebViewGuest : public GuestView<WebViewGuest>,
|
| - public content::NotificationObserver {
|
| - public:
|
| - static GuestViewBase* Create(content::BrowserContext* browser_context,
|
| - int guest_instance_id);
|
| -
|
| - // For WebViewGuest, we create special guest processes, which host the
|
| - // tag content separately from the main application that embeds the tag.
|
| - // A <webview> can specify both the partition name and whether the storage
|
| - // for that partition should be persisted. Each tag gets a SiteInstance with
|
| - // a specially formatted URL, based on the application it is hosted by and
|
| - // the partition requested by it. The format for that URL is:
|
| - // chrome-guest://partition_domain/persist?partition_name
|
| - static bool GetGuestPartitionConfigForSite(const GURL& site,
|
| - std::string* partition_domain,
|
| - std::string* partition_name,
|
| - bool* in_memory);
|
| -
|
| - // Returns guestview::kInstanceIDNone if |contents| does not correspond to a
|
| - // WebViewGuest.
|
| - static int GetViewInstanceId(content::WebContents* contents);
|
| -
|
| - static const char Type[];
|
| -
|
| - // Request navigating the guest to the provided |src| URL.
|
| - void NavigateGuest(const std::string& src);
|
| -
|
| - // Shows the context menu for the guest.
|
| - // |items| acts as a filter. This restricts the current context's default
|
| - // menu items to contain only the items from |items|.
|
| - // |items| == NULL means no filtering will be applied.
|
| - void ShowContextMenu(
|
| - int request_id,
|
| - const WebViewGuestDelegate::MenuItemVector* items);
|
| -
|
| - // Sets the frame name of the guest.
|
| - void SetName(const std::string& name);
|
| -
|
| - // Set the zoom factor.
|
| - void SetZoom(double zoom_factor);
|
| -
|
| - // GuestViewBase implementation.
|
| - virtual const char* GetAPINamespace() OVERRIDE;
|
| - virtual void CreateWebContents(
|
| - const std::string& embedder_extension_id,
|
| - int embedder_render_process_id,
|
| - const base::DictionaryValue& create_params,
|
| - const WebContentsCreatedCallback& callback) OVERRIDE;
|
| - virtual void DidAttachToEmbedder() OVERRIDE;
|
| - virtual void DidInitialize() OVERRIDE;
|
| - virtual void DidStopLoading() OVERRIDE;
|
| - virtual void EmbedderDestroyed() OVERRIDE;
|
| - virtual void GuestDestroyed() OVERRIDE;
|
| - virtual void GuestReady() OVERRIDE;
|
| - virtual void GuestSizeChangedDueToAutoSize(
|
| - const gfx::Size& old_size,
|
| - const gfx::Size& new_size) OVERRIDE;
|
| - virtual bool IsAutoSizeSupported() const OVERRIDE;
|
| - virtual bool IsDragAndDropEnabled() const OVERRIDE;
|
| - virtual void WillAttachToEmbedder() OVERRIDE;
|
| - virtual void WillDestroy() OVERRIDE;
|
| -
|
| - // WebContentsDelegate implementation.
|
| - virtual bool AddMessageToConsole(content::WebContents* source,
|
| - int32 level,
|
| - const base::string16& message,
|
| - int32 line_no,
|
| - const base::string16& source_id) OVERRIDE;
|
| - virtual void LoadProgressChanged(content::WebContents* source,
|
| - double progress) OVERRIDE;
|
| - virtual void CloseContents(content::WebContents* source) OVERRIDE;
|
| - virtual void FindReply(content::WebContents* source,
|
| - int request_id,
|
| - int number_of_matches,
|
| - const gfx::Rect& selection_rect,
|
| - int active_match_ordinal,
|
| - bool final_update) OVERRIDE;
|
| - virtual bool HandleContextMenu(
|
| - const content::ContextMenuParams& params) OVERRIDE;
|
| - virtual void HandleKeyboardEvent(
|
| - content::WebContents* source,
|
| - const content::NativeWebKeyboardEvent& event) OVERRIDE;
|
| - virtual void RendererResponsive(content::WebContents* source) OVERRIDE;
|
| - virtual void RendererUnresponsive(content::WebContents* source) OVERRIDE;
|
| - virtual void RequestMediaAccessPermission(
|
| - content::WebContents* source,
|
| - const content::MediaStreamRequest& request,
|
| - const content::MediaResponseCallback& callback) OVERRIDE;
|
| - virtual void CanDownload(content::RenderViewHost* render_view_host,
|
| - const GURL& url,
|
| - const std::string& request_method,
|
| - const base::Callback<void(bool)>& callback) OVERRIDE;
|
| - virtual content::JavaScriptDialogManager*
|
| - GetJavaScriptDialogManager() OVERRIDE;
|
| - virtual content::ColorChooser* OpenColorChooser(
|
| - content::WebContents* web_contents,
|
| - SkColor color,
|
| - const std::vector<content::ColorSuggestion>& suggestions) OVERRIDE;
|
| - virtual void RunFileChooser(
|
| - content::WebContents* web_contents,
|
| - const content::FileChooserParams& params) OVERRIDE;
|
| - virtual void AddNewContents(content::WebContents* source,
|
| - content::WebContents* new_contents,
|
| - WindowOpenDisposition disposition,
|
| - const gfx::Rect& initial_pos,
|
| - bool user_gesture,
|
| - bool* was_blocked) OVERRIDE;
|
| - virtual content::WebContents* OpenURLFromTab(
|
| - content::WebContents* source,
|
| - const content::OpenURLParams& params) OVERRIDE;
|
| - virtual void WebContentsCreated(content::WebContents* source_contents,
|
| - int opener_render_frame_id,
|
| - const base::string16& frame_name,
|
| - const GURL& target_url,
|
| - content::WebContents* new_contents) OVERRIDE;
|
| -
|
| - // BrowserPluginGuestDelegate implementation.
|
| - virtual content::WebContents* CreateNewGuestWindow(
|
| - const content::WebContents::CreateParams& create_params) OVERRIDE;
|
| - virtual void RequestPointerLockPermission(
|
| - bool user_gesture,
|
| - bool last_unlocked_by_target,
|
| - const base::Callback<void(bool)>& callback) OVERRIDE;
|
| - // NotificationObserver implementation.
|
| - virtual void Observe(int type,
|
| - const content::NotificationSource& source,
|
| - const content::NotificationDetails& details) OVERRIDE;
|
| -
|
| - // Returns the current zoom factor.
|
| - double GetZoom();
|
| -
|
| - // Begin or continue a find request.
|
| - void Find(
|
| - const base::string16& search_text,
|
| - const blink::WebFindOptions& options,
|
| - scoped_refptr<WebViewInternalFindFunction> find_function);
|
| -
|
| - // Conclude a find request to clear highlighting.
|
| - void StopFinding(content::StopFindAction);
|
| -
|
| - // If possible, navigate the guest to |relative_index| entries away from the
|
| - // current navigation entry.
|
| - void Go(int relative_index);
|
| -
|
| - // Reload the guest.
|
| - void Reload();
|
| -
|
| - typedef base::Callback<void(bool /* allow */,
|
| - const std::string& /* user_input */)>
|
| - PermissionResponseCallback;
|
| - int RequestPermission(
|
| - WebViewPermissionType permission_type,
|
| - const base::DictionaryValue& request_info,
|
| - const PermissionResponseCallback& callback,
|
| - bool allowed_by_default);
|
| -
|
| - // Requests Geolocation Permission from the embedder.
|
| - void RequestGeolocationPermission(int bridge_id,
|
| - const GURL& requesting_frame,
|
| - bool user_gesture,
|
| - const base::Callback<void(bool)>& callback);
|
| - void CancelGeolocationPermissionRequest(int bridge_id);
|
| -
|
| - // Called when file system access is requested by the guest content using the
|
| - // HTML5 file system API in main thread, or a worker thread.
|
| - // The request is plumbed through the <webview> permission request API. The
|
| - // request will be:
|
| - // - Allowed if the embedder explicitly allowed it.
|
| - // - Denied if the embedder explicitly denied.
|
| - // - Determined by the guest's content settings if the embedder does not
|
| - // perform an explicit action.
|
| - void RequestFileSystemPermission(const GURL& url,
|
| - bool allowed_by_default,
|
| - const base::Callback<void(bool)>& callback);
|
| -
|
| - // Overrides the user agent for this guest.
|
| - // This affects subsequent guest navigations.
|
| - void SetUserAgentOverride(const std::string& user_agent_override);
|
| -
|
| - // Stop loading the guest.
|
| - void Stop();
|
| -
|
| - // Kill the guest process.
|
| - void Terminate();
|
| -
|
| - // Clears data in the storage partition of this guest.
|
| - //
|
| - // Partition data that are newer than |removal_since| will be removed.
|
| - // |removal_mask| corresponds to bitmask in StoragePartition::RemoveDataMask.
|
| - bool ClearData(const base::Time remove_since,
|
| - uint32 removal_mask,
|
| - const base::Closure& callback);
|
| -
|
| - ScriptExecutor* script_executor() { return script_executor_.get(); }
|
| -
|
| - private:
|
| - friend class WebViewPermissionHelper;
|
| - WebViewGuest(content::BrowserContext* browser_context,
|
| - int guest_instance_id);
|
| -
|
| - virtual ~WebViewGuest();
|
| -
|
| - void AttachWebViewHelpers(content::WebContents* contents);
|
| -
|
| - void OnWebViewNewWindowResponse(int new_window_instance_id,
|
| - bool allow,
|
| - const std::string& user_input);
|
| -
|
| - // WebContentsObserver implementation.
|
| - virtual void DidCommitProvisionalLoadForFrame(
|
| - content::RenderFrameHost* render_frame_host,
|
| - const GURL& url,
|
| - content::PageTransition transition_type) OVERRIDE;
|
| - virtual void DidFailProvisionalLoad(
|
| - content::RenderFrameHost* render_frame_host,
|
| - const GURL& validated_url,
|
| - int error_code,
|
| - const base::string16& error_description) OVERRIDE;
|
| - virtual void DidStartProvisionalLoadForFrame(
|
| - content::RenderFrameHost* render_frame_host,
|
| - const GURL& validated_url,
|
| - bool is_error_page,
|
| - bool is_iframe_srcdoc) OVERRIDE;
|
| - virtual void DocumentLoadedInFrame(
|
| - content::RenderFrameHost* render_frame_host) OVERRIDE;
|
| - virtual bool OnMessageReceived(
|
| - const IPC::Message& message,
|
| - content::RenderFrameHost* render_frame_host) OVERRIDE;
|
| - virtual void RenderProcessGone(base::TerminationStatus status) OVERRIDE;
|
| - virtual void UserAgentOverrideSet(const std::string& user_agent) OVERRIDE;
|
| -
|
| - // Informs the embedder of a frame name change.
|
| - void ReportFrameNameChange(const std::string& name);
|
| -
|
| - // Called after the load handler is called in the guest's main frame.
|
| - void LoadHandlerCalled();
|
| -
|
| - // Called when a redirect notification occurs.
|
| - void LoadRedirect(const GURL& old_url,
|
| - const GURL& new_url,
|
| - bool is_top_level);
|
| -
|
| - void PushWebViewStateToIOThread();
|
| - static void RemoveWebViewStateFromIOThread(
|
| - content::WebContents* web_contents);
|
| -
|
| - void LoadURLWithParams(const GURL& url,
|
| - const content::Referrer& referrer,
|
| - content::PageTransition transition_type,
|
| - content::WebContents* web_contents);
|
| -
|
| - void RequestNewWindowPermission(
|
| - WindowOpenDisposition disposition,
|
| - const gfx::Rect& initial_bounds,
|
| - bool user_gesture,
|
| - content::WebContents* new_contents);
|
| -
|
| - // Destroy unattached new windows that have been opened by this
|
| - // WebViewGuest.
|
| - void DestroyUnattachedWindows();
|
| -
|
| - // Requests resolution of a potentially relative URL.
|
| - GURL ResolveURL(const std::string& src);
|
| -
|
| - // Notification that a load in the guest resulted in abort. Note that |url|
|
| - // may be invalid.
|
| - void LoadAbort(bool is_top_level,
|
| - const GURL& url,
|
| - const std::string& error_type);
|
| -
|
| - void OnFrameNameChanged(bool is_top_level, const std::string& name);
|
| -
|
| - // Creates a new guest window owned by this WebViewGuest.
|
| - void CreateNewGuestWebViewWindow(const content::OpenURLParams& params);
|
| -
|
| - void NewGuestWebViewCallback(const content::OpenURLParams& params,
|
| - content::WebContents* guest_web_contents);
|
| -
|
| - bool HandleKeyboardShortcuts(const content::NativeWebKeyboardEvent& event);
|
| -
|
| - void SetUpAutoSize();
|
| -
|
| - ObserverList<ScriptExecutionObserver> script_observers_;
|
| - scoped_ptr<ScriptExecutor> script_executor_;
|
| -
|
| - content::NotificationRegistrar notification_registrar_;
|
| -
|
| - // True if the user agent is overridden.
|
| - bool is_overriding_user_agent_;
|
| -
|
| - // Stores the window name of the main frame of the guest.
|
| - std::string name_;
|
| -
|
| - // Handles find requests and replies for the webview find API.
|
| - WebViewFindHelper find_helper_;
|
| -
|
| - // Handles the JavaScript dialog requests.
|
| - JavaScriptDialogHelper javascript_dialog_helper_;
|
| -
|
| - // Handels permission requests.
|
| - scoped_ptr<WebViewPermissionHelper> web_view_permission_helper_;
|
| -
|
| - scoped_ptr<WebViewGuestDelegate> web_view_guest_delegate_;
|
| -
|
| - friend void WebViewFindHelper::DispatchFindUpdateEvent(bool canceled,
|
| - bool final_update);
|
| -
|
| - // Tracks the name, and target URL of the new window. Once the first
|
| - // navigation commits, we no longer track this information.
|
| - struct NewWindowInfo {
|
| - GURL url;
|
| - std::string name;
|
| - bool changed;
|
| - NewWindowInfo(const GURL& url, const std::string& name) :
|
| - url(url),
|
| - name(name),
|
| - changed(false) {}
|
| - };
|
| -
|
| - typedef std::map<WebViewGuest*, NewWindowInfo> PendingWindowMap;
|
| - PendingWindowMap pending_new_windows_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(WebViewGuest);
|
| -};
|
| -
|
| -} // namespace extensions
|
| -
|
| -#endif // EXTENSIONS_BROWSER_GUEST_VIEW_WEB_VIEW_WEB_VIEW_GUEST_H_
|
|
|