OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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 "components/ui/zoom/page_zoom.h" | 5 #include "components/zoom/page_zoom.h" |
6 | 6 |
7 #include <stddef.h> | 7 #include <stddef.h> |
8 | 8 |
9 #include <algorithm> | 9 #include <algorithm> |
10 #include <cmath> | 10 #include <cmath> |
11 | 11 |
12 #include "components/prefs/pref_service.h" | 12 #include "components/prefs/pref_service.h" |
13 #include "components/ui/zoom/page_zoom_constants.h" | 13 #include "components/zoom/page_zoom_constants.h" |
14 #include "components/ui/zoom/zoom_controller.h" | 14 #include "components/zoom/zoom_controller.h" |
15 #include "content/public/browser/host_zoom_map.h" | 15 #include "content/public/browser/host_zoom_map.h" |
16 #include "content/public/browser/render_view_host.h" | 16 #include "content/public/browser/render_view_host.h" |
17 #include "content/public/browser/user_metrics.h" | 17 #include "content/public/browser/user_metrics.h" |
18 #include "content/public/browser/web_contents.h" | 18 #include "content/public/browser/web_contents.h" |
19 #include "content/public/common/page_zoom.h" | 19 #include "content/public/common/page_zoom.h" |
20 #include "content/public/common/renderer_preferences.h" | 20 #include "content/public/common/renderer_preferences.h" |
21 | 21 |
22 using base::UserMetricsAction; | 22 using base::UserMetricsAction; |
23 | 23 |
24 namespace { | 24 namespace { |
25 | 25 |
26 enum PageZoomValueType { | 26 enum PageZoomValueType { |
27 PAGE_ZOOM_VALUE_TYPE_FACTOR, | 27 PAGE_ZOOM_VALUE_TYPE_FACTOR, |
28 PAGE_ZOOM_VALUE_TYPE_LEVEL, | 28 PAGE_ZOOM_VALUE_TYPE_LEVEL, |
29 }; | 29 }; |
30 | 30 |
31 std::vector<double> PresetZoomValues(PageZoomValueType value_type, | 31 std::vector<double> PresetZoomValues(PageZoomValueType value_type, |
32 double custom_value) { | 32 double custom_value) { |
33 // Generate a vector of zoom values from an array of known preset | 33 // Generate a vector of zoom values from an array of known preset |
34 // factors. The values in content::kPresetZoomFactors will already be in | 34 // factors. The values in content::kPresetZoomFactors will already be in |
35 // sorted order. | 35 // sorted order. |
36 std::vector<double> zoom_values; | 36 std::vector<double> zoom_values; |
37 bool found_custom = false; | 37 bool found_custom = false; |
38 for (size_t i = 0; i < ui_zoom::kPresetZoomFactorsSize; i++) { | 38 for (size_t i = 0; i < zoom::kPresetZoomFactorsSize; i++) { |
39 double zoom_value = ui_zoom::kPresetZoomFactors[i]; | 39 double zoom_value = zoom::kPresetZoomFactors[i]; |
40 if (value_type == PAGE_ZOOM_VALUE_TYPE_LEVEL) | 40 if (value_type == PAGE_ZOOM_VALUE_TYPE_LEVEL) |
41 zoom_value = content::ZoomFactorToZoomLevel(zoom_value); | 41 zoom_value = content::ZoomFactorToZoomLevel(zoom_value); |
42 if (content::ZoomValuesEqual(zoom_value, custom_value)) | 42 if (content::ZoomValuesEqual(zoom_value, custom_value)) |
43 found_custom = true; | 43 found_custom = true; |
44 zoom_values.push_back(zoom_value); | 44 zoom_values.push_back(zoom_value); |
45 } | 45 } |
46 // If the preset array did not contain the custom value, append it to the | 46 // If the preset array did not contain the custom value, append it to the |
47 // vector and then sort. | 47 // vector and then sort. |
48 double min = value_type == PAGE_ZOOM_VALUE_TYPE_LEVEL ? | 48 double min = value_type == PAGE_ZOOM_VALUE_TYPE_LEVEL |
49 content::ZoomFactorToZoomLevel(content::kMinimumZoomFactor) : | 49 ? content::ZoomFactorToZoomLevel(content::kMinimumZoomFactor) |
50 content::kMinimumZoomFactor; | 50 : content::kMinimumZoomFactor; |
51 double max = value_type == PAGE_ZOOM_VALUE_TYPE_LEVEL ? | 51 double max = value_type == PAGE_ZOOM_VALUE_TYPE_LEVEL |
52 content::ZoomFactorToZoomLevel(content::kMaximumZoomFactor) : | 52 ? content::ZoomFactorToZoomLevel(content::kMaximumZoomFactor) |
53 content::kMaximumZoomFactor; | 53 : content::kMaximumZoomFactor; |
54 if (!found_custom && custom_value > min && custom_value < max) { | 54 if (!found_custom && custom_value > min && custom_value < max) { |
55 zoom_values.push_back(custom_value); | 55 zoom_values.push_back(custom_value); |
56 std::sort(zoom_values.begin(), zoom_values.end()); | 56 std::sort(zoom_values.begin(), zoom_values.end()); |
57 } | 57 } |
58 return zoom_values; | 58 return zoom_values; |
59 } | 59 } |
60 | 60 |
61 } // namespace anonymous | 61 } // namespace anonymous |
62 | 62 |
63 namespace ui_zoom { | 63 namespace zoom { |
64 | 64 |
65 // static | 65 // static |
66 std::vector<double> PageZoom::PresetZoomFactors(double custom_factor) { | 66 std::vector<double> PageZoom::PresetZoomFactors(double custom_factor) { |
67 return PresetZoomValues(PAGE_ZOOM_VALUE_TYPE_FACTOR, custom_factor); | 67 return PresetZoomValues(PAGE_ZOOM_VALUE_TYPE_FACTOR, custom_factor); |
68 } | 68 } |
69 | 69 |
70 // static | 70 // static |
71 std::vector<double> PageZoom::PresetZoomLevels(double custom_level) { | 71 std::vector<double> PageZoom::PresetZoomLevels(double custom_level) { |
72 return PresetZoomValues(PAGE_ZOOM_VALUE_TYPE_LEVEL, custom_level); | 72 return PresetZoomValues(PAGE_ZOOM_VALUE_TYPE_LEVEL, custom_level); |
73 } | 73 } |
74 | 74 |
75 // static | 75 // static |
76 void PageZoom::Zoom(content::WebContents* web_contents, | 76 void PageZoom::Zoom(content::WebContents* web_contents, |
77 content::PageZoom zoom) { | 77 content::PageZoom zoom) { |
78 ui_zoom::ZoomController* zoom_controller = | 78 zoom::ZoomController* zoom_controller = |
79 ui_zoom::ZoomController::FromWebContents(web_contents); | 79 zoom::ZoomController::FromWebContents(web_contents); |
80 if (!zoom_controller) | 80 if (!zoom_controller) |
81 return; | 81 return; |
82 | 82 |
83 double current_zoom_level = zoom_controller->GetZoomLevel(); | 83 double current_zoom_level = zoom_controller->GetZoomLevel(); |
84 double default_zoom_level = zoom_controller->GetDefaultZoomLevel(); | 84 double default_zoom_level = zoom_controller->GetDefaultZoomLevel(); |
85 | 85 |
86 if (zoom == content::PAGE_ZOOM_RESET) { | 86 if (zoom == content::PAGE_ZOOM_RESET) { |
87 zoom_controller->SetZoomLevel(default_zoom_level); | 87 zoom_controller->SetZoomLevel(default_zoom_level); |
88 web_contents->SetPageScale(1.f); | 88 web_contents->SetPageScale(1.f); |
89 content::RecordAction(UserMetricsAction("ZoomNormal")); | 89 content::RecordAction(UserMetricsAction("ZoomNormal")); |
(...skipping 30 matching lines...) Expand all Loading... |
120 if (zoom_level > current_zoom_level) { | 120 if (zoom_level > current_zoom_level) { |
121 zoom_controller->SetZoomLevel(zoom_level); | 121 zoom_controller->SetZoomLevel(zoom_level); |
122 content::RecordAction(UserMetricsAction("ZoomPlus")); | 122 content::RecordAction(UserMetricsAction("ZoomPlus")); |
123 return; | 123 return; |
124 } | 124 } |
125 } | 125 } |
126 content::RecordAction(UserMetricsAction("ZoomPlus_AtMaximum")); | 126 content::RecordAction(UserMetricsAction("ZoomPlus_AtMaximum")); |
127 } | 127 } |
128 } | 128 } |
129 | 129 |
130 } // namespace ui_zoom | 130 } // namespace zoom |
OLD | NEW |