OLD | NEW |
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 #include "content/browser/web_contents/web_contents_impl.h" | 5 #include "content/browser/web_contents/web_contents_impl.h" |
6 | 6 |
7 #include <utility> | 7 #include <utility> |
8 | 8 |
9 #include "base/command_line.h" | 9 #include "base/command_line.h" |
10 #include "base/debug/trace_event.h" | 10 #include "base/debug/trace_event.h" |
(...skipping 337 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
348 capturer_count_(0), | 348 capturer_count_(0), |
349 should_normally_be_visible_(true), | 349 should_normally_be_visible_(true), |
350 is_being_destroyed_(false), | 350 is_being_destroyed_(false), |
351 notify_disconnection_(false), | 351 notify_disconnection_(false), |
352 dialog_manager_(NULL), | 352 dialog_manager_(NULL), |
353 is_showing_before_unload_dialog_(false), | 353 is_showing_before_unload_dialog_(false), |
354 last_active_time_(base::TimeTicks::Now()), | 354 last_active_time_(base::TimeTicks::Now()), |
355 closed_by_user_gesture_(false), | 355 closed_by_user_gesture_(false), |
356 minimum_zoom_percent_(static_cast<int>(kMinimumZoomFactor * 100)), | 356 minimum_zoom_percent_(static_cast<int>(kMinimumZoomFactor * 100)), |
357 maximum_zoom_percent_(static_cast<int>(kMaximumZoomFactor * 100)), | 357 maximum_zoom_percent_(static_cast<int>(kMaximumZoomFactor * 100)), |
358 temporary_zoom_settings_(false), | |
359 totalPinchGestureAmount_(0), | 358 totalPinchGestureAmount_(0), |
360 currentPinchZoomStepDelta_(0), | 359 currentPinchZoomStepDelta_(0), |
361 render_view_message_source_(NULL), | 360 render_view_message_source_(NULL), |
362 fullscreen_widget_routing_id_(MSG_ROUTING_NONE), | 361 fullscreen_widget_routing_id_(MSG_ROUTING_NONE), |
363 is_subframe_(false), | 362 is_subframe_(false), |
364 last_dialog_suppressed_(false) { | 363 last_dialog_suppressed_(false) { |
365 for (size_t i = 0; i < g_created_callbacks.Get().size(); i++) | 364 for (size_t i = 0; i < g_created_callbacks.Get().size(); i++) |
366 g_created_callbacks.Get().at(i).Run(this); | 365 g_created_callbacks.Get().at(i).Run(this); |
367 frame_tree_.SetFrameRemoveListener( | 366 frame_tree_.SetFrameRemoveListener( |
368 base::Bind(&WebContentsImpl::OnFrameRemoved, | 367 base::Bind(&WebContentsImpl::OnFrameRemoved, |
(...skipping 1770 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2139 } | 2138 } |
2140 | 2139 |
2141 void WebContentsImpl::SetClosedByUserGesture(bool value) { | 2140 void WebContentsImpl::SetClosedByUserGesture(bool value) { |
2142 closed_by_user_gesture_ = value; | 2141 closed_by_user_gesture_ = value; |
2143 } | 2142 } |
2144 | 2143 |
2145 bool WebContentsImpl::GetClosedByUserGesture() const { | 2144 bool WebContentsImpl::GetClosedByUserGesture() const { |
2146 return closed_by_user_gesture_; | 2145 return closed_by_user_gesture_; |
2147 } | 2146 } |
2148 | 2147 |
2149 double WebContentsImpl::GetZoomLevel() const { | |
2150 HostZoomMapImpl* zoom_map = static_cast<HostZoomMapImpl*>( | |
2151 HostZoomMap::GetForBrowserContext(GetBrowserContext())); | |
2152 if (!zoom_map) | |
2153 return 0; | |
2154 | |
2155 double zoom_level; | |
2156 if (temporary_zoom_settings_) { | |
2157 zoom_level = zoom_map->GetTemporaryZoomLevel( | |
2158 GetRenderProcessHost()->GetID(), GetRenderViewHost()->GetRoutingID()); | |
2159 } else { | |
2160 GURL url; | |
2161 NavigationEntry* entry = GetController().GetLastCommittedEntry(); | |
2162 // Since zoom map is updated using rewritten URL, use rewritten URL | |
2163 // to get the zoom level. | |
2164 url = entry ? entry->GetURL() : GURL::EmptyGURL(); | |
2165 zoom_level = zoom_map->GetZoomLevelForHostAndScheme(url.scheme(), | |
2166 net::GetHostOrSpecFromURL(url)); | |
2167 } | |
2168 return zoom_level; | |
2169 } | |
2170 | |
2171 int WebContentsImpl::GetZoomPercent(bool* enable_increment, | 2148 int WebContentsImpl::GetZoomPercent(bool* enable_increment, |
2172 bool* enable_decrement) const { | 2149 bool* enable_decrement) const { |
2173 *enable_decrement = *enable_increment = false; | 2150 *enable_decrement = *enable_increment = false; |
2174 // Calculate the zoom percent from the factor. Round up to the nearest whole | 2151 // Calculate the zoom percent from the factor. Round up to the nearest whole |
2175 // number. | 2152 // number. |
2176 int percent = static_cast<int>( | 2153 int percent = static_cast<int>( |
2177 ZoomLevelToZoomFactor(GetZoomLevel()) * 100 + 0.5); | 2154 ZoomLevelToZoomFactor(HostZoomMap::GetZoomLevel(this)) * 100 + 0.5); |
2178 *enable_decrement = percent > minimum_zoom_percent_; | 2155 *enable_decrement = percent > minimum_zoom_percent_; |
2179 *enable_increment = percent < maximum_zoom_percent_; | 2156 *enable_increment = percent < maximum_zoom_percent_; |
2180 return percent; | 2157 return percent; |
2181 } | 2158 } |
2182 | 2159 |
2183 void WebContentsImpl::ViewSource() { | 2160 void WebContentsImpl::ViewSource() { |
2184 if (!delegate_) | 2161 if (!delegate_) |
2185 return; | 2162 return; |
2186 | 2163 |
2187 NavigationEntry* entry = GetController().GetLastCommittedEntry(); | 2164 NavigationEntry* entry = GetController().GetLastCommittedEntry(); |
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2256 const ImageDownloadCallback& callback) { | 2233 const ImageDownloadCallback& callback) { |
2257 int id = StartDownload(GetMainFrame(), url, is_favicon, max_bitmap_size); | 2234 int id = StartDownload(GetMainFrame(), url, is_favicon, max_bitmap_size); |
2258 image_download_map_[id] = callback; | 2235 image_download_map_[id] = callback; |
2259 return id; | 2236 return id; |
2260 } | 2237 } |
2261 | 2238 |
2262 bool WebContentsImpl::IsSubframe() const { | 2239 bool WebContentsImpl::IsSubframe() const { |
2263 return is_subframe_; | 2240 return is_subframe_; |
2264 } | 2241 } |
2265 | 2242 |
2266 void WebContentsImpl::SetZoomLevel(double level) { | |
2267 Send(new ViewMsg_SetZoomLevel(GetRoutingID(), level)); | |
2268 BrowserPluginEmbedder* embedder = GetBrowserPluginEmbedder(); | |
2269 if (embedder) | |
2270 embedder->SetZoomLevel(level); | |
2271 } | |
2272 | |
2273 void WebContentsImpl::Find(int request_id, | 2243 void WebContentsImpl::Find(int request_id, |
2274 const base::string16& search_text, | 2244 const base::string16& search_text, |
2275 const blink::WebFindOptions& options) { | 2245 const blink::WebFindOptions& options) { |
2276 Send(new ViewMsg_Find(GetRoutingID(), request_id, search_text, options)); | 2246 Send(new ViewMsg_Find(GetRoutingID(), request_id, search_text, options)); |
2277 } | 2247 } |
2278 | 2248 |
2279 void WebContentsImpl::StopFinding(StopFindAction action) { | 2249 void WebContentsImpl::StopFinding(StopFindAction action) { |
2280 Send(new ViewMsg_StopFinding(GetRoutingID(), action)); | 2250 Send(new ViewMsg_StopFinding(GetRoutingID(), action)); |
2281 } | 2251 } |
2282 | 2252 |
(...skipping 409 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2692 loading_weak_factory_.GetWeakPtr()), | 2662 loading_weak_factory_.GetWeakPtr()), |
2693 min_delay); | 2663 min_delay); |
2694 } | 2664 } |
2695 | 2665 |
2696 void WebContentsImpl::OnGoToEntryAtOffset(int offset) { | 2666 void WebContentsImpl::OnGoToEntryAtOffset(int offset) { |
2697 if (!delegate_ || delegate_->OnGoToEntryOffset(offset)) | 2667 if (!delegate_ || delegate_->OnGoToEntryOffset(offset)) |
2698 controller_.GoToOffset(offset); | 2668 controller_.GoToOffset(offset); |
2699 } | 2669 } |
2700 | 2670 |
2701 void WebContentsImpl::OnUpdateZoomLimits(int minimum_percent, | 2671 void WebContentsImpl::OnUpdateZoomLimits(int minimum_percent, |
2702 int maximum_percent, | 2672 int maximum_percent) { |
2703 bool remember) { | |
2704 minimum_zoom_percent_ = minimum_percent; | 2673 minimum_zoom_percent_ = minimum_percent; |
2705 maximum_zoom_percent_ = maximum_percent; | 2674 maximum_zoom_percent_ = maximum_percent; |
2706 temporary_zoom_settings_ = !remember; | |
2707 } | 2675 } |
2708 | 2676 |
2709 void WebContentsImpl::OnEnumerateDirectory(int request_id, | 2677 void WebContentsImpl::OnEnumerateDirectory(int request_id, |
2710 const base::FilePath& path) { | 2678 const base::FilePath& path) { |
2711 if (!delegate_) | 2679 if (!delegate_) |
2712 return; | 2680 return; |
2713 | 2681 |
2714 ChildProcessSecurityPolicyImpl* policy = | 2682 ChildProcessSecurityPolicyImpl* policy = |
2715 ChildProcessSecurityPolicyImpl::GetInstance(); | 2683 ChildProcessSecurityPolicyImpl::GetInstance(); |
2716 if (policy->CanReadFile(GetRenderProcessHost()->GetID(), path)) | 2684 if (policy->CanReadFile(GetRenderProcessHost()->GetID(), path)) |
(...skipping 1353 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4070 | 4038 |
4071 void WebContentsImpl::OnPreferredSizeChanged(const gfx::Size& old_size) { | 4039 void WebContentsImpl::OnPreferredSizeChanged(const gfx::Size& old_size) { |
4072 if (!delegate_) | 4040 if (!delegate_) |
4073 return; | 4041 return; |
4074 const gfx::Size new_size = GetPreferredSize(); | 4042 const gfx::Size new_size = GetPreferredSize(); |
4075 if (new_size != old_size) | 4043 if (new_size != old_size) |
4076 delegate_->UpdatePreferredSize(this, new_size); | 4044 delegate_->UpdatePreferredSize(this, new_size); |
4077 } | 4045 } |
4078 | 4046 |
4079 } // namespace content | 4047 } // namespace content |
OLD | NEW |