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