Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(523)

Side by Side Diff: content/renderer/render_view_impl.h

Issue 501583003: Move external popup menus from WebViewClient to WebFrameClient, part 3/3. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase Created 6 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « content/renderer/render_frame_impl.cc ('k') | content/renderer/render_view_impl.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef CONTENT_RENDERER_RENDER_VIEW_IMPL_H_ 5 #ifndef CONTENT_RENDERER_RENDER_VIEW_IMPL_H_
6 #define CONTENT_RENDERER_RENDER_VIEW_IMPL_H_ 6 #define CONTENT_RENDERER_RENDER_VIEW_IMPL_H_
7 7
8 #include <deque> 8 #include <deque>
9 #include <map> 9 #include <map>
10 #include <set> 10 #include <set>
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after
114 #if defined(OS_ANDROID) 114 #if defined(OS_ANDROID)
115 class WebHitTestResult; 115 class WebHitTestResult;
116 #endif 116 #endif
117 } // namespace blink 117 } // namespace blink
118 118
119 namespace ui { 119 namespace ui {
120 struct SelectedFileInfo; 120 struct SelectedFileInfo;
121 } 121 }
122 122
123 namespace content { 123 namespace content {
124
124 class BrowserPluginManager; 125 class BrowserPluginManager;
125 class DevToolsAgent; 126 class DevToolsAgent;
126 class DocumentState; 127 class DocumentState;
127 class ExternalPopupMenu;
128 class FaviconHelper; 128 class FaviconHelper;
129 class HistoryController; 129 class HistoryController;
130 class HistoryEntry; 130 class HistoryEntry;
131 class ImageResourceFetcher; 131 class ImageResourceFetcher;
132 class MouseLockDispatcher; 132 class MouseLockDispatcher;
133 class NavigationState; 133 class NavigationState;
134 class PepperPluginInstanceImpl; 134 class PepperPluginInstanceImpl;
135 class RenderViewImplTest; 135 class RenderViewImplTest;
136 class RenderViewObserver; 136 class RenderViewObserver;
137 class RenderViewTest; 137 class RenderViewTest;
138 class RendererDateTimePicker; 138 class RendererDateTimePicker;
139 class RendererWebColorChooserImpl; 139 class RendererWebColorChooserImpl;
140 class SpeechRecognitionDispatcher; 140 class SpeechRecognitionDispatcher;
141 class WebPluginDelegateProxy; 141 class WebPluginDelegateProxy;
142 struct DropData; 142 struct DropData;
143 struct FaviconURL; 143 struct FaviconURL;
144 struct FileChooserParams; 144 struct FileChooserParams;
145 struct RenderViewImplParams; 145 struct RenderViewImplParams;
146 146
147 #if defined(OS_ANDROID) 147 #if defined(OS_ANDROID)
148 class WebMediaPlayerProxyAndroid; 148 class WebMediaPlayerProxyAndroid;
149 #endif 149 #endif
150 150
151 // 151 //
152 // RenderView is an object that manages a WebView object, and provides a 152 // RenderView is an object that manages a WebView object, and provides a
153 // communication interface with an embedding application process 153 // communication interface with an embedding application process.
154 // 154 //
155 class CONTENT_EXPORT RenderViewImpl 155 class CONTENT_EXPORT RenderViewImpl
156 : public RenderWidget, 156 : public RenderWidget,
157 NON_EXPORTED_BASE(public blink::WebViewClient), 157 NON_EXPORTED_BASE(public blink::WebViewClient),
158 NON_EXPORTED_BASE(public blink::WebPageSerializerClient), 158 NON_EXPORTED_BASE(public blink::WebPageSerializerClient),
159 public RenderView, 159 public RenderView,
160 public base::SupportsWeakPtr<RenderViewImpl> { 160 public base::SupportsWeakPtr<RenderViewImpl> {
161 public: 161 public:
162 // Creates a new RenderView. |opener_id| is the routing ID of the RenderView 162 // Creates a new RenderView. |opener_id| is the routing ID of the RenderView
163 // responsible for creating this RenderView. Note that if the original opener 163 // responsible for creating this RenderView. Note that if the original opener
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
240 // no other waiting items in the queue. 240 // no other waiting items in the queue.
241 // 241 //
242 // Returns true if the chooser was successfully scheduled. False means we 242 // Returns true if the chooser was successfully scheduled. False means we
243 // didn't schedule anything. 243 // didn't schedule anything.
244 bool ScheduleFileChooser(const FileChooserParams& params, 244 bool ScheduleFileChooser(const FileChooserParams& params,
245 blink::WebFileChooserCompletion* completion); 245 blink::WebFileChooserCompletion* completion);
246 246
247 #if defined(OS_ANDROID) 247 #if defined(OS_ANDROID)
248 void DismissDateTimeDialog(); 248 void DismissDateTimeDialog();
249 #endif 249 #endif
250 #if defined(OS_MACOSX) || defined(OS_ANDROID)
251 void DidHideExternalPopupMenu();
252 #endif
253 250
254 bool is_loading() const { return frames_in_progress_ != 0; } 251 bool is_loading() const { return frames_in_progress_ != 0; }
255 252
256 void FrameDidStartLoading(blink::WebFrame* frame); 253 void FrameDidStartLoading(blink::WebFrame* frame);
257 void FrameDidStopLoading(blink::WebFrame* frame); 254 void FrameDidStopLoading(blink::WebFrame* frame);
258 255
259 // Plugin-related functions -------------------------------------------------- 256 // Plugin-related functions --------------------------------------------------
260 257
261 #if defined(ENABLE_PLUGINS) 258 #if defined(ENABLE_PLUGINS)
262 // Get/set the plugin which will be used as to handle document find requests. 259 // Get/set the plugin which will be used as to handle document find requests.
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after
369 366
370 // blink::WebViewClient implementation -------------------------------------- 367 // blink::WebViewClient implementation --------------------------------------
371 368
372 virtual blink::WebView* createView(blink::WebLocalFrame* creator, 369 virtual blink::WebView* createView(blink::WebLocalFrame* creator,
373 const blink::WebURLRequest& request, 370 const blink::WebURLRequest& request,
374 const blink::WebWindowFeatures& features, 371 const blink::WebWindowFeatures& features,
375 const blink::WebString& frame_name, 372 const blink::WebString& frame_name,
376 blink::WebNavigationPolicy policy, 373 blink::WebNavigationPolicy policy,
377 bool suppress_opener); 374 bool suppress_opener);
378 virtual blink::WebWidget* createPopupMenu(blink::WebPopupType popup_type); 375 virtual blink::WebWidget* createPopupMenu(blink::WebPopupType popup_type);
379 virtual blink::WebExternalPopupMenu* createExternalPopupMenu(
380 const blink::WebPopupMenuInfo& popup_menu_info,
381 blink::WebExternalPopupMenuClient* popup_menu_client);
382 virtual blink::WebStorageNamespace* createSessionStorageNamespace(); 376 virtual blink::WebStorageNamespace* createSessionStorageNamespace();
383 virtual void printPage(blink::WebLocalFrame* frame); 377 virtual void printPage(blink::WebLocalFrame* frame);
384 virtual bool enumerateChosenDirectory( 378 virtual bool enumerateChosenDirectory(
385 const blink::WebString& path, 379 const blink::WebString& path,
386 blink::WebFileChooserCompletion* chooser_completion); 380 blink::WebFileChooserCompletion* chooser_completion);
387 virtual void didCancelCompositionOnSelectionChange(); 381 virtual void didCancelCompositionOnSelectionChange();
388 virtual bool handleCurrentKeyboardEvent(); 382 virtual bool handleCurrentKeyboardEvent();
389 virtual bool runFileChooser( 383 virtual bool runFileChooser(
390 const blink::WebFileChooserParams& params, 384 const blink::WebFileChooserParams& params,
391 blink::WebFileChooserCompletion* chooser_completion); 385 blink::WebFileChooserCompletion* chooser_completion);
(...skipping 166 matching lines...) Expand 10 before | Expand all | Expand 10 after
558 virtual void SetScreenMetricsEmulationParameters( 552 virtual void SetScreenMetricsEmulationParameters(
559 float device_scale_factor, 553 float device_scale_factor,
560 const gfx::Point& root_layer_offset, 554 const gfx::Point& root_layer_offset,
561 float root_layer_scale) OVERRIDE; 555 float root_layer_scale) OVERRIDE;
562 556
563 // Do not delete directly. This class is reference counted. 557 // Do not delete directly. This class is reference counted.
564 virtual ~RenderViewImpl(); 558 virtual ~RenderViewImpl();
565 559
566 private: 560 private:
567 // For unit tests. 561 // For unit tests.
568 friend class ExternalPopupMenuTest;
569 friend class PepperDeviceTest; 562 friend class PepperDeviceTest;
570 friend class RenderViewImplTest; 563 friend class RenderViewImplTest;
571 friend class RenderViewTest; 564 friend class RenderViewTest;
572 friend class RendererAccessibilityTest; 565 friend class RendererAccessibilityTest;
573 566
574 // TODO(nasko): Temporarily friend RenderFrameImpl, so we don't duplicate 567 // TODO(nasko): Temporarily friend RenderFrameImpl, so we don't duplicate
575 // utility functions needed in both classes, while we move frame specific 568 // utility functions needed in both classes, while we move frame specific
576 // code away from this class. 569 // code away from this class.
577 friend class RenderFrameImpl; 570 friend class RenderFrameImpl;
578 571
579 FRIEND_TEST_ALL_PREFIXES(ExternalPopupMenuDisplayNoneTest, SelectItem);
580 FRIEND_TEST_ALL_PREFIXES(ExternalPopupMenuRemoveTest, RemoveOnChange);
581 FRIEND_TEST_ALL_PREFIXES(ExternalPopupMenuTest, NormalCase);
582 FRIEND_TEST_ALL_PREFIXES(ExternalPopupMenuTest, ShowPopupThenNavigate);
583 FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest, DecideNavigationPolicyForWebUI); 572 FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest, DecideNavigationPolicyForWebUI);
584 FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest, 573 FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest,
585 DidFailProvisionalLoadWithErrorForError); 574 DidFailProvisionalLoadWithErrorForError);
586 FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest, 575 FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest,
587 DidFailProvisionalLoadWithErrorForCancellation); 576 DidFailProvisionalLoadWithErrorForCancellation);
588 FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest, 577 FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest,
589 DontIgnoreBackAfterNavEntryLimit); 578 DontIgnoreBackAfterNavEntryLimit);
590 FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest, ImeComposition); 579 FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest, ImeComposition);
591 FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest, InsertCharacters); 580 FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest, InsertCharacters);
592 FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest, JSBlockSentAfterPageLoad); 581 FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest, JSBlockSentAfterPageLoad);
(...skipping 140 matching lines...) Expand 10 before | Expand all | Expand 10 after
733 void OnUpdateWebPreferences(const WebPreferences& prefs); 722 void OnUpdateWebPreferences(const WebPreferences& prefs);
734 void OnZoom(PageZoom zoom); 723 void OnZoom(PageZoom zoom);
735 void OnEnableViewSourceMode(); 724 void OnEnableViewSourceMode();
736 void OnWindowSnapshotCompleted(const int snapshot_id, 725 void OnWindowSnapshotCompleted(const int snapshot_id,
737 const gfx::Size& size, const std::vector<unsigned char>& png); 726 const gfx::Size& size, const std::vector<unsigned char>& png);
738 void OnForceRedraw(int request_id); 727 void OnForceRedraw(int request_id);
739 void OnSelectWordAroundCaret(); 728 void OnSelectWordAroundCaret();
740 #if defined(OS_ANDROID) 729 #if defined(OS_ANDROID)
741 void OnActivateNearestFindResult(int request_id, float x, float y); 730 void OnActivateNearestFindResult(int request_id, float x, float y);
742 void OnFindMatchRects(int current_version); 731 void OnFindMatchRects(int current_version);
743 void OnSelectPopupMenuItems(bool canceled,
744 const std::vector<int>& selected_indices);
745 void OnUndoScrollFocusedEditableNodeIntoRect(); 732 void OnUndoScrollFocusedEditableNodeIntoRect();
746 void OnUpdateTopControlsState(bool enable_hiding, 733 void OnUpdateTopControlsState(bool enable_hiding,
747 bool enable_showing, 734 bool enable_showing,
748 bool animate); 735 bool animate);
749 void OnExtractSmartClipData(const gfx::Rect& rect); 736 void OnExtractSmartClipData(const gfx::Rect& rect);
750 #elif defined(OS_MACOSX) 737 #elif defined(OS_MACOSX)
751 void OnGetRenderedText(); 738 void OnGetRenderedText();
752 void OnPluginImeCompositionCompleted(const base::string16& text, 739 void OnPluginImeCompositionCompleted(const base::string16& text,
753 int plugin_id); 740 int plugin_id);
754 void OnSelectPopupMenuItem(int selected_index);
755 void OnSetInLiveResize(bool in_live_resize); 741 void OnSetInLiveResize(bool in_live_resize);
756 void OnSetWindowVisibility(bool visible); 742 void OnSetWindowVisibility(bool visible);
757 void OnWindowFrameChanged(const gfx::Rect& window_frame, 743 void OnWindowFrameChanged(const gfx::Rect& window_frame,
758 const gfx::Rect& view_frame); 744 const gfx::Rect& view_frame);
759 #endif 745 #endif
760 746
761 // Adding a new message handler? Please add it in alphabetical order above 747 // Adding a new message handler? Please add it in alphabetical order above
762 // and put it in the same position in the .cc file. 748 // and put it in the same position in the .cc file.
763 749
764 // Misc private functions ---------------------------------------------------- 750 // Misc private functions ----------------------------------------------------
(...skipping 338 matching lines...) Expand 10 before | Expand all | Expand 10 after
1103 1089
1104 // The SessionStorage namespace that we're assigned to has an ID, and that ID 1090 // The SessionStorage namespace that we're assigned to has an ID, and that ID
1105 // is passed to us upon creation. WebKit asks for this ID upon first use and 1091 // is passed to us upon creation. WebKit asks for this ID upon first use and
1106 // uses it whenever asking the browser process to allocate new storage areas. 1092 // uses it whenever asking the browser process to allocate new storage areas.
1107 int64 session_storage_namespace_id_; 1093 int64 session_storage_namespace_id_;
1108 1094
1109 // Stores edit commands associated to the next key event. 1095 // Stores edit commands associated to the next key event.
1110 // Shall be cleared as soon as the next key event is processed. 1096 // Shall be cleared as soon as the next key event is processed.
1111 EditCommands edit_commands_; 1097 EditCommands edit_commands_;
1112 1098
1113 #if defined(OS_MACOSX) || defined(OS_ANDROID)
1114 // The external popup for the currently showing select popup.
1115 scoped_ptr<ExternalPopupMenu> external_popup_menu_;
1116 #endif
1117
1118 // All the registered observers. We expect this list to be small, so vector 1099 // All the registered observers. We expect this list to be small, so vector
1119 // is fine. 1100 // is fine.
1120 ObserverList<RenderViewObserver> observers_; 1101 ObserverList<RenderViewObserver> observers_;
1121 1102
1122 // Wraps the |webwidget_| as a MouseLockDispatcher::LockTarget interface. 1103 // Wraps the |webwidget_| as a MouseLockDispatcher::LockTarget interface.
1123 scoped_ptr<MouseLockDispatcher::LockTarget> webwidget_mouse_lock_target_; 1104 scoped_ptr<MouseLockDispatcher::LockTarget> webwidget_mouse_lock_target_;
1124 1105
1125 // State associated with the GetWindowSnapshot function. 1106 // State associated with the GetWindowSnapshot function.
1126 int next_snapshot_id_; 1107 int next_snapshot_id_;
1127 typedef std::map<int, WindowSnapshotCallback> PendingSnapshotMap; 1108 typedef std::map<int, WindowSnapshotCallback> PendingSnapshotMap;
(...skipping 19 matching lines...) Expand all
1147 // use the Observer interface to filter IPC messages and receive frame change 1128 // use the Observer interface to filter IPC messages and receive frame change
1148 // notifications. 1129 // notifications.
1149 // --------------------------------------------------------------------------- 1130 // ---------------------------------------------------------------------------
1150 1131
1151 DISALLOW_COPY_AND_ASSIGN(RenderViewImpl); 1132 DISALLOW_COPY_AND_ASSIGN(RenderViewImpl);
1152 }; 1133 };
1153 1134
1154 } // namespace content 1135 } // namespace content
1155 1136
1156 #endif // CONTENT_RENDERER_RENDER_VIEW_IMPL_H_ 1137 #endif // CONTENT_RENDERER_RENDER_VIEW_IMPL_H_
OLDNEW
« no previous file with comments | « content/renderer/render_frame_impl.cc ('k') | content/renderer/render_view_impl.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698