| Index: chrome/renderer/render_view.h
|
| ===================================================================
|
| --- chrome/renderer/render_view.h (revision 71253)
|
| +++ chrome/renderer/render_view.h (working copy)
|
| @@ -17,6 +17,7 @@
|
| #include "base/basictypes.h"
|
| #include "base/gtest_prod_util.h"
|
| #include "base/linked_ptr.h"
|
| +#include "base/observer_list.h"
|
| #include "base/timer.h"
|
| #include "base/weak_ptr.h"
|
| #include "build/build_config.h"
|
| @@ -35,7 +36,6 @@
|
| #include "chrome/renderer/renderer_webcookiejar_impl.h"
|
| #include "chrome/renderer/searchbox.h"
|
| #include "chrome/renderer/translate_helper.h"
|
| -#include "third_party/WebKit/WebKit/chromium/public/WebAutoFillClient.h"
|
| #include "third_party/WebKit/WebKit/chromium/public/WebConsoleMessage.h"
|
| #include "third_party/WebKit/WebKit/chromium/public/WebFileSystem.h"
|
| #include "third_party/WebKit/WebKit/chromium/public/WebFrameClient.h"
|
| @@ -55,7 +55,6 @@
|
| #endif
|
|
|
| class AudioMessageFilter;
|
| -class AutoFillHelper;
|
| class BlockedPlugin;
|
| class CustomMenuListener;
|
| class DictionaryValue;
|
| @@ -73,10 +72,9 @@
|
| class LoadProgressTracker;
|
| class NavigationState;
|
| class NotificationProvider;
|
| -class PageClickTracker;
|
| -class PasswordAutocompleteManager;
|
| class PepperDeviceTest;
|
| class PrintWebViewHelper;
|
| +class RenderViewObserver;
|
| class RenderViewVisitor;
|
| class SkBitmap;
|
| class SpeechInputDispatcher;
|
| @@ -174,7 +172,6 @@
|
| // communication interface with an embedding application process
|
| //
|
| class RenderView : public RenderWidget,
|
| - public WebKit::WebAutoFillClient,
|
| public WebKit::WebViewClient,
|
| public WebKit::WebFrameClient,
|
| public WebKit::WebPageSerializerClient,
|
| @@ -239,10 +236,6 @@
|
| send_content_state_immediately_ = value;
|
| }
|
|
|
| - PageClickTracker* page_click_tracker() const {
|
| - return page_click_tracker_.get();
|
| - }
|
| -
|
| // May be NULL if client-side phishing detection is disabled.
|
| safe_browsing::PhishingClassifierDelegate*
|
| phishing_classifier_delegate() const {
|
| @@ -261,6 +254,10 @@
|
| return search_box_;
|
| }
|
|
|
| + // Functions to add and remove observers for this object.
|
| + void AddObserver(RenderViewObserver* observer);
|
| + void RemoveObserver(RenderViewObserver* observer);
|
| +
|
| // Called from JavaScript window.external.AddSearchProvider() to add a
|
| // keyword for a provider described in the given OpenSearch document.
|
| void AddSearchProvider(const std::string& url,
|
| @@ -397,30 +394,6 @@
|
|
|
| virtual bool OnMessageReceived(const IPC::Message& msg);
|
|
|
| - // WebKit::WebAutoFillClient implementation ----------------------------------
|
| - virtual void didAcceptAutoFillSuggestion(const WebKit::WebNode& node,
|
| - const WebKit::WebString& value,
|
| - const WebKit::WebString& label,
|
| - int unique_id,
|
| - unsigned index);
|
| - virtual void didSelectAutoFillSuggestion(const WebKit::WebNode& node,
|
| - const WebKit::WebString& value,
|
| - const WebKit::WebString& label,
|
| - int unique_id);
|
| - virtual void didClearAutoFillSelection(const WebKit::WebNode& node);
|
| - virtual void didAcceptAutocompleteSuggestion(
|
| - const WebKit::WebInputElement& element);
|
| - virtual void removeAutocompleteSuggestion(const WebKit::WebString& name,
|
| - const WebKit::WebString& value);
|
| - // TODO(jam): remove this function after WebKit roll
|
| - virtual void removeAutofillSuggestions(const WebKit::WebString& name,
|
| - const WebKit::WebString& value);
|
| - virtual void textFieldDidEndEditing(const WebKit::WebInputElement& element);
|
| - virtual void textFieldDidChange(const WebKit::WebInputElement& element);
|
| - virtual void textFieldDidReceiveKeyDown(
|
| - const WebKit::WebInputElement& element,
|
| - const WebKit::WebKeyboardEvent& event);
|
| -
|
| // WebKit::WebWidgetClient implementation ------------------------------------
|
|
|
| // Most methods are handled by RenderWidget.
|
| @@ -753,22 +726,18 @@
|
| };
|
|
|
| RenderView(RenderThreadBase* render_thread,
|
| - const WebPreferences& webkit_preferences,
|
| - int64 session_storage_namespace_id);
|
| + gfx::NativeViewId parent_hwnd,
|
| + int32 opener_id,
|
| + const RendererPreferences& renderer_prefs,
|
| + const WebPreferences& webkit_prefs,
|
| + SharedRenderViewCounter* counter,
|
| + int32 routing_id,
|
| + int64 session_storage_namespace_id,
|
| + const string16& frame_name);
|
|
|
| // Do not delete directly. This class is reference counted.
|
| virtual ~RenderView();
|
|
|
| - // Initializes this view with the given parent and ID. The |routing_id| can be
|
| - // set to 'MSG_ROUTING_NONE' if the true ID is not yet known. In this case,
|
| - // CompleteInit must be called later with the true ID.
|
| - void Init(gfx::NativeViewId parent,
|
| - int32 opener_id,
|
| - const RendererPreferences& renderer_prefs,
|
| - SharedRenderViewCounter* counter,
|
| - int32 routing_id,
|
| - const string16& frame_name);
|
| -
|
| void UpdateURL(WebKit::WebFrame* frame);
|
| void UpdateTitle(WebKit::WebFrame* frame, const string16& title);
|
| void UpdateSessionHistory(WebKit::WebFrame* frame);
|
| @@ -826,10 +795,6 @@
|
| void AddGURLSearchProvider(const GURL& osd_url,
|
| const ViewHostMsg_PageHasOSDD_Type& provider_type);
|
|
|
| - // Called in a posted task by textFieldDidChange() to work-around a WebKit bug
|
| - // http://bugs.webkit.org/show_bug.cgi?id=16976
|
| - void TextFieldDidChangeImpl(const WebKit::WebInputElement& element);
|
| -
|
| // Send queued accessibility notifications from the renderer to the browser.
|
| void SendPendingAccessibilityNotifications();
|
|
|
| @@ -849,18 +814,6 @@
|
| void OnAsyncFileOpened(base::PlatformFileError error_code,
|
| IPC::PlatformFileForTransit file_for_transit,
|
| int message_id);
|
| - void OnAutocompleteSuggestionsReturned(
|
| - int query_id,
|
| - const std::vector<string16>& suggestions,
|
| - int default_suggestions_index);
|
| - void OnAutoFillFormDataFilled(int query_id,
|
| - const webkit_glue::FormData& form);
|
| - void OnAutoFillSuggestionsReturned(
|
| - int query_id,
|
| - const std::vector<string16>& values,
|
| - const std::vector<string16>& labels,
|
| - const std::vector<string16>& icons,
|
| - const std::vector<int>& unique_ids);
|
| void OnCancelDownload(int32 download_id);
|
| void OnClearFocusedNode();
|
| void OnClosePage(const ViewMsg_ClosePage_Params& params);
|
| @@ -939,8 +892,6 @@
|
| void OnMoveOrResizeStarted();
|
| void OnNavigate(const ViewMsg_Navigate_Params& params);
|
| void OnNotifyRendererViewType(ViewType::Type view_type);
|
| - void OnFillPasswordForm(
|
| - const webkit_glue::PasswordFormFillData& form_data);
|
| void OnPaste();
|
| #if defined(OS_MACOSX)
|
| void OnPluginImeCompositionConfirmed(const string16& text, int plugin_id);
|
| @@ -1376,46 +1327,42 @@
|
| // Helper objects ------------------------------------------------------------
|
|
|
| ScopedRunnableMethodFactory<RenderView> page_info_method_factory_;
|
| - ScopedRunnableMethodFactory<RenderView> autofill_method_factory_;
|
| ScopedRunnableMethodFactory<RenderView> accessibility_method_factory_;
|
|
|
| // Responsible for translating the page contents to other languages.
|
| TranslateHelper translate_helper_;
|
|
|
| - // Responsible for automatically filling login and password textfields.
|
| - scoped_ptr<PasswordAutocompleteManager> password_autocomplete_manager_;
|
| -
|
| - // Responsible for filling forms (AutoFill) and single text entries
|
| - // (Autocomplete).
|
| - scoped_ptr<AutoFillHelper> autofill_helper_;
|
| -
|
| - // Tracks when text input controls get clicked.
|
| - // IMPORTANT: this should be declared after autofill_helper_ and
|
| - // password_autocomplete_manager_ so the tracker is deleted first (so we won't
|
| - // run the risk of notifying deleted objects).
|
| - scoped_ptr<PageClickTracker> page_click_tracker_;
|
| -
|
| RendererWebCookieJarImpl cookie_jar_;
|
|
|
| + // The next group of objects all implement RenderViewObserver, so are deleted
|
| + // along with the RenderView automatically. This is why we just store weak
|
| + // references.
|
| +
|
| // Provides access to this renderer from the remote Inspector UI.
|
| - scoped_ptr<DevToolsAgent> devtools_agent_;
|
| + DevToolsAgent* devtools_agent_;
|
|
|
| // DevToolsClient for renderer hosting developer tools UI. It's NULL for other
|
| // render views.
|
| - scoped_ptr<DevToolsClient> devtools_client_;
|
| + DevToolsClient* devtools_client_;
|
|
|
| // Holds a reference to the service which provides desktop notifications.
|
| - scoped_ptr<NotificationProvider> notification_provider_;
|
| + NotificationProvider* notification_provider_;
|
|
|
| + // The geolocation dispatcher attached to this view, lazily initialized.
|
| + GeolocationDispatcher* geolocation_dispatcher_;
|
| +
|
| + // The speech dispatcher attached to this view, lazily initialized.
|
| + SpeechInputDispatcher* speech_input_dispatcher_;
|
| +
|
| + // Device orientation dispatcher attached to this view; lazily initialized.
|
| + DeviceOrientationDispatcher* device_orientation_dispatcher_;
|
| +
|
| // PrintWebViewHelper handles printing. Note that this object is constructed
|
| // when printing for the first time but only destroyed with the RenderView.
|
| scoped_ptr<PrintWebViewHelper> print_helper_;
|
|
|
| scoped_refptr<AudioMessageFilter> audio_message_filter_;
|
|
|
| - // The geolocation dispatcher attached to this view, lazily initialized.
|
| - scoped_ptr<GeolocationDispatcher> geolocation_dispatcher_;
|
| -
|
| // Handles accessibility requests into the renderer side, as well as
|
| // maintains the cache and other features of the accessibility tree.
|
| scoped_ptr<WebKit::WebAccessibilityCache> accessibility_;
|
| @@ -1428,12 +1375,6 @@
|
| // Set if we are waiting for a accessibility notification ack.
|
| bool accessibility_ack_pending_;
|
|
|
| - // The speech dispatcher attached to this view, lazily initialized.
|
| - scoped_ptr<SpeechInputDispatcher> speech_input_dispatcher_;
|
| -
|
| - // Device orientation dispatcher attached to this view; lazily initialized.
|
| - scoped_ptr<DeviceOrientationDispatcher> device_orientation_dispatcher_;
|
| -
|
| // Responsible for sending page load related histograms.
|
| PageLoadHistograms page_load_histograms_;
|
|
|
| @@ -1519,11 +1460,17 @@
|
| // Reports load progress to the browser.
|
| scoped_ptr<LoadProgressTracker> load_progress_tracker_;
|
|
|
| + // All the registered observers. We expect this list to be small, so vector
|
| + // is fine.
|
| + ObserverList<RenderViewObserver> observers_;
|
| +
|
| // ---------------------------------------------------------------------------
|
| // ADDING NEW DATA? Please see if it fits appropriately in one of the above
|
| // sections rather than throwing it randomly at the end. If you're adding a
|
| // bunch of stuff, you should probably create a helper class and put your
|
| - // data and methods on that to avoid bloating RenderView more.
|
| + // data and methods on that to avoid bloating RenderView more. You can use
|
| + // the Observer interface to filter IPC messages and receive frame change
|
| + // notifications.
|
| // ---------------------------------------------------------------------------
|
|
|
| DISALLOW_COPY_AND_ASSIGN(RenderView);
|
|
|