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

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

Issue 7831028: Compute pageScaleFactor on page so that fixed layout page fits width of window. (Closed) Base URL: http://git.chromium.org/git/chromium.git@trunk
Patch Set: Created 9 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
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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_H_ 5 #ifndef CONTENT_RENDERER_RENDER_VIEW_H_
6 #define CONTENT_RENDERER_RENDER_VIEW_H_ 6 #define CONTENT_RENDERER_RENDER_VIEW_H_
7 #pragma once 7 #pragma once
8 8
9 #include <deque> 9 #include <deque>
10 #include <map> 10 #include <map>
(...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after
143 class WebStorageNamespace; 143 class WebStorageNamespace;
144 class WebURLLoader; 144 class WebURLLoader;
145 class WebURLRequest; 145 class WebURLRequest;
146 class WebView; 146 class WebView;
147 struct WebContextMenuData; 147 struct WebContextMenuData;
148 struct WebFileChooserParams; 148 struct WebFileChooserParams;
149 struct WebFindOptions; 149 struct WebFindOptions;
150 struct WebMediaPlayerAction; 150 struct WebMediaPlayerAction;
151 struct WebPluginParams; 151 struct WebPluginParams;
152 struct WebPoint; 152 struct WebPoint;
153 struct WebRect;
153 struct WebWindowFeatures; 154 struct WebWindowFeatures;
154 } 155 }
155 156
156 // We need to prevent a page from trying to create infinite popups. It is not 157 // We need to prevent a page from trying to create infinite popups. It is not
157 // as simple as keeping a count of the number of immediate children 158 // as simple as keeping a count of the number of immediate children
158 // popups. Having an html file that window.open()s itself would create 159 // popups. Having an html file that window.open()s itself would create
159 // an unlimited chain of RenderViews who only have one RenderView child. 160 // an unlimited chain of RenderViews who only have one RenderView child.
160 // 161 //
161 // Therefore, each new top level RenderView creates a new counter and shares it 162 // Therefore, each new top level RenderView creates a new counter and shares it
162 // with all its children and grandchildren popup RenderViews created with 163 // with all its children and grandchildren popup RenderViews created with
(...skipping 201 matching lines...) Expand 10 before | Expand all | Expand 10 after
364 WebKit::WebFrame* creator, 365 WebKit::WebFrame* creator,
365 const WebKit::WebURLRequest& request, 366 const WebKit::WebURLRequest& request,
366 const WebKit::WebWindowFeatures& features, 367 const WebKit::WebWindowFeatures& features,
367 const WebKit::WebString& frame_name); 368 const WebKit::WebString& frame_name);
368 virtual WebKit::WebWidget* createPopupMenu(WebKit::WebPopupType popup_type); 369 virtual WebKit::WebWidget* createPopupMenu(WebKit::WebPopupType popup_type);
369 virtual WebKit::WebWidget* createPopupMenu( 370 virtual WebKit::WebWidget* createPopupMenu(
370 const WebKit::WebPopupMenuInfo& info); 371 const WebKit::WebPopupMenuInfo& info);
371 virtual WebKit::WebExternalPopupMenu* createExternalPopupMenu( 372 virtual WebKit::WebExternalPopupMenu* createExternalPopupMenu(
372 const WebKit::WebPopupMenuInfo& popup_menu_info, 373 const WebKit::WebPopupMenuInfo& popup_menu_info,
373 WebKit::WebExternalPopupMenuClient* popup_menu_client); 374 WebKit::WebExternalPopupMenuClient* popup_menu_client);
375 virtual WebKit::WebRect getDeviceRect() const;
374 virtual WebKit::WebStorageNamespace* createSessionStorageNamespace( 376 virtual WebKit::WebStorageNamespace* createSessionStorageNamespace(
375 unsigned quota); 377 unsigned quota);
376 virtual void didAddMessageToConsole( 378 virtual void didAddMessageToConsole(
377 const WebKit::WebConsoleMessage& message, 379 const WebKit::WebConsoleMessage& message,
378 const WebKit::WebString& source_name, 380 const WebKit::WebString& source_name,
379 unsigned source_line); 381 unsigned source_line);
380 virtual void printPage(WebKit::WebFrame* frame); 382 virtual void printPage(WebKit::WebFrame* frame);
381 virtual WebKit::WebNotificationPresenter* notificationPresenter(); 383 virtual WebKit::WebNotificationPresenter* notificationPresenter();
382 virtual bool enumerateChosenDirectory( 384 virtual bool enumerateChosenDirectory(
383 const WebKit::WebString& path, 385 const WebKit::WebString& path,
(...skipping 242 matching lines...) Expand 10 before | Expand all | Expand 10 after
626 // RenderWidget overrides: 628 // RenderWidget overrides:
627 virtual void Close(); 629 virtual void Close();
628 virtual void OnResize(const gfx::Size& new_size, 630 virtual void OnResize(const gfx::Size& new_size,
629 const gfx::Rect& resizer_rect); 631 const gfx::Rect& resizer_rect);
630 virtual void DidInitiatePaint(); 632 virtual void DidInitiatePaint();
631 virtual webkit::ppapi::PluginInstance* GetBitmapForOptimizedPluginPaint( 633 virtual webkit::ppapi::PluginInstance* GetBitmapForOptimizedPluginPaint(
632 const gfx::Rect& paint_bounds, 634 const gfx::Rect& paint_bounds,
633 TransportDIB** dib, 635 TransportDIB** dib,
634 gfx::Rect* location, 636 gfx::Rect* location,
635 gfx::Rect* clip); 637 gfx::Rect* clip);
638 virtual gfx::Size GetContentSize();
639 virtual float GetPageScaleFactor();
636 virtual gfx::Point GetScrollOffset(); 640 virtual gfx::Point GetScrollOffset();
637 virtual void DidHandleKeyEvent(); 641 virtual void DidHandleKeyEvent();
638 virtual void DidHandleMouseEvent(const WebKit::WebMouseEvent& event); 642 virtual void DidHandleMouseEvent(const WebKit::WebMouseEvent& event);
639 virtual void OnSetFocus(bool enable); 643 virtual void OnSetFocus(bool enable);
640 virtual void OnWasHidden(); 644 virtual void OnWasHidden();
641 virtual void OnWasRestored(bool needs_repainting); 645 virtual void OnWasRestored(bool needs_repainting);
642 virtual bool SupportsAsynchronousSwapBuffers() OVERRIDE; 646 virtual bool SupportsAsynchronousSwapBuffers() OVERRIDE;
643 virtual void OnImeSetComposition( 647 virtual void OnImeSetComposition(
644 const string16& text, 648 const string16& text,
645 const std::vector<WebKit::WebCompositionUnderline>& underlines, 649 const std::vector<WebKit::WebCompositionUnderline>& underlines,
(...skipping 232 matching lines...) Expand 10 before | Expand all | Expand 10 after
878 882
879 // Misc private functions ---------------------------------------------------- 883 // Misc private functions ----------------------------------------------------
880 884
881 void AltErrorPageFinished(WebKit::WebFrame* frame, 885 void AltErrorPageFinished(WebKit::WebFrame* frame,
882 const WebKit::WebURLError& original_error, 886 const WebKit::WebURLError& original_error,
883 const std::string& html); 887 const std::string& html);
884 888
885 // Check whether the preferred size has changed. 889 // Check whether the preferred size has changed.
886 void CheckPreferredSize(); 890 void CheckPreferredSize();
887 891
892 // Return the offset, restricted to the document area at the given scale.
893 // (The offset is in the coordinate space of the new scale).
894 gfx::Point ClampOffsetAtScale(const gfx::Point& offset, float scale);
895
896 // Get the scale when the document is fully zoomed out (minimum scale).
897 float ComputeOverviewScale(gfx::Size content_size);
898
899 // Compute the scale within min/max limits.
900 float ComputeScaleWithinLimits(float scale);
901
888 // This callback is triggered when DownloadFavicon completes, either 902 // This callback is triggered when DownloadFavicon completes, either
889 // succesfully or with a failure. See DownloadFavicon for more 903 // succesfully or with a failure. See DownloadFavicon for more
890 // details. 904 // details.
891 void DidDownloadFavicon(webkit_glue::ImageResourceFetcher* fetcher, 905 void DidDownloadFavicon(webkit_glue::ImageResourceFetcher* fetcher,
892 const SkBitmap& image); 906 const SkBitmap& image);
893 907
894 // Requests to download a favicon image. When done, the RenderView 908 // Requests to download a favicon image. When done, the RenderView
895 // is notified by way of DidDownloadFavicon. Returns true if the 909 // is notified by way of DidDownloadFavicon. Returns true if the
896 // request was successfully started, false otherwise. id is used to 910 // request was successfully started, false otherwise. id is used to
897 // uniquely identify the request and passed back to the 911 // uniquely identify the request and passed back to the
(...skipping 20 matching lines...) Expand all
918 932
919 // Returns false unless this is a top-level navigation that crosses origins. 933 // Returns false unless this is a top-level navigation that crosses origins.
920 bool IsNonLocalTopLevelNavigation(const GURL& url, 934 bool IsNonLocalTopLevelNavigation(const GURL& url,
921 WebKit::WebFrame* frame, 935 WebKit::WebFrame* frame,
922 WebKit::WebNavigationType type); 936 WebKit::WebNavigationType type);
923 937
924 bool MaybeLoadAlternateErrorPage(WebKit::WebFrame* frame, 938 bool MaybeLoadAlternateErrorPage(WebKit::WebFrame* frame,
925 const WebKit::WebURLError& error, 939 const WebKit::WebURLError& error,
926 bool replace); 940 bool replace);
927 941
942 // Scales current scroll offset to a new factor.
943 void SetPageScaleFactor(float scale);
944
945 // Moves to the scroll offset (should be provided in the new scale, not the
946 // previous one).
947 void SetPageScaleFactorAndScroll(float scale, const gfx::Point& offset);
948
949 // Keeps Keeps the anchor (in window coordinates) in a stable position on the
jam 2011/09/02 17:11:41 nit Keeps Keeps
Fady Samuel 2011/09/08 23:46:39 Done.
950 // screen.
951 void SetPageScaleFactorWithAnchor(float scale,
952 const gfx::Point& window_anchor);
953
928 // Starts nav_state_sync_timer_ if it isn't already running. 954 // Starts nav_state_sync_timer_ if it isn't already running.
929 void StartNavStateSyncTimerIfNecessary(); 955 void StartNavStateSyncTimerIfNecessary();
930 956
931 // Dispatches the current navigation state to the browser. Called on a 957 // Dispatches the current navigation state to the browser. Called on a
932 // periodic timer so we don't send too many messages. 958 // periodic timer so we don't send too many messages.
933 void SyncNavigationState(); 959 void SyncNavigationState();
934 960
935 // Dispatches the current state of selection on the webpage to the browser if 961 // Dispatches the current state of selection on the webpage to the browser if
936 // it has changed. 962 // it has changed.
937 // TODO(varunjain): delete this method once we figure out how to keep 963 // TODO(varunjain): delete this method once we figure out how to keep
938 // selection handles in sync with the webpage. 964 // selection handles in sync with the webpage.
939 void SyncSelectionIfRequired(); 965 void SyncSelectionIfRequired();
940 966
967 // If not already initialized, initialize the scale to the overview scale.
968 bool TryInitializeScale();
969
941 #if defined(OS_POSIX) && !defined(OS_MACOSX) 970 #if defined(OS_POSIX) && !defined(OS_MACOSX)
942 void UpdateFontRenderingFromRendererPrefs(); 971 void UpdateFontRenderingFromRendererPrefs();
943 #else 972 #else
944 void UpdateFontRenderingFromRendererPrefs() {} 973 void UpdateFontRenderingFromRendererPrefs() {}
945 #endif 974 #endif
946 975
976 void UpdatePageScale(gfx::Size new_content_size);
977
947 // Update the target url and tell the browser that the target URL has changed. 978 // Update the target url and tell the browser that the target URL has changed.
948 // If |url| is empty, show |fallback_url|. 979 // If |url| is empty, show |fallback_url|.
949 void UpdateTargetURL(const GURL& url, const GURL& fallback_url); 980 void UpdateTargetURL(const GURL& url, const GURL& fallback_url);
950 981
951 // --------------------------------------------------------------------------- 982 // ---------------------------------------------------------------------------
952 // ADDING NEW FUNCTIONS? Please keep private functions alphabetized and put 983 // ADDING NEW FUNCTIONS? Please keep private functions alphabetized and put
953 // it in the same order in the .cc file as it was in the header. 984 // it in the same order in the .cc file as it was in the header.
954 // --------------------------------------------------------------------------- 985 // ---------------------------------------------------------------------------
955 986
956 // Settings ------------------------------------------------------------------ 987 // Settings ------------------------------------------------------------------
(...skipping 213 matching lines...) Expand 10 before | Expand all | Expand 10 after
1170 pending_accessibility_notifications_; 1201 pending_accessibility_notifications_;
1171 1202
1172 // Set if we are waiting for a accessibility notification ack. 1203 // Set if we are waiting for a accessibility notification ack.
1173 bool accessibility_ack_pending_; 1204 bool accessibility_ack_pending_;
1174 1205
1175 // Dispatches all P2P socket used by the renderer. 1206 // Dispatches all P2P socket used by the renderer.
1176 content::P2PSocketDispatcher* p2p_socket_dispatcher_; 1207 content::P2PSocketDispatcher* p2p_socket_dispatcher_;
1177 1208
1178 DevToolsAgent* devtools_agent_; 1209 DevToolsAgent* devtools_agent_;
1179 1210
1211 // Scaling and Fixed Layout --------------------------------------------------
1212
1213 // viewport scale related fields.
1214 bool user_scalable_;
1215 float minimum_scale_;
1216 float maximum_scale_;
jamesr 2011/09/02 17:43:09 why are these member variables? from what I can te
Fady Samuel 2011/09/08 23:46:39 These will be used in an upcoming patch once the v
1217
1180 // Misc ---------------------------------------------------------------------- 1218 // Misc ----------------------------------------------------------------------
1181 1219
1182 // The current and pending file chooser completion objects. If the queue is 1220 // The current and pending file chooser completion objects. If the queue is
1183 // nonempty, the first item represents the currently running file chooser 1221 // nonempty, the first item represents the currently running file chooser
1184 // callback, and the remaining elements are the other file chooser completion 1222 // callback, and the remaining elements are the other file chooser completion
1185 // still waiting to be run (in order). 1223 // still waiting to be run (in order).
1186 struct PendingFileChooser; 1224 struct PendingFileChooser;
1187 std::deque< linked_ptr<PendingFileChooser> > file_chooser_completions_; 1225 std::deque< linked_ptr<PendingFileChooser> > file_chooser_completions_;
1188 1226
1189 // The current directory enumeration callback 1227 // The current directory enumeration callback
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
1241 // bunch of stuff, you should probably create a helper class and put your 1279 // bunch of stuff, you should probably create a helper class and put your
1242 // data and methods on that to avoid bloating RenderView more. You can use 1280 // data and methods on that to avoid bloating RenderView more. You can use
1243 // the Observer interface to filter IPC messages and receive frame change 1281 // the Observer interface to filter IPC messages and receive frame change
1244 // notifications. 1282 // notifications.
1245 // --------------------------------------------------------------------------- 1283 // ---------------------------------------------------------------------------
1246 1284
1247 DISALLOW_COPY_AND_ASSIGN(RenderView); 1285 DISALLOW_COPY_AND_ASSIGN(RenderView);
1248 }; 1286 };
1249 1287
1250 #endif // CONTENT_RENDERER_RENDER_VIEW_H_ 1288 #endif // CONTENT_RENDERER_RENDER_VIEW_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698