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 "pdf/instance.h" | 5 #include "pdf/instance.h" |
6 | 6 |
7 #include <algorithm> // for min() | 7 #include <algorithm> // for min() |
8 #define _USE_MATH_DEFINES // for M_PI | 8 #define _USE_MATH_DEFINES // for M_PI |
9 #include <cmath> // for log() and pow() | 9 #include <cmath> // for log() and pow() |
10 #include <math.h> | 10 #include <math.h> |
(...skipping 1208 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1219 void Instance::NavigateTo(const std::string& url, bool open_in_new_tab) { | 1219 void Instance::NavigateTo(const std::string& url, bool open_in_new_tab) { |
1220 std::string url_copy(url); | 1220 std::string url_copy(url); |
1221 | 1221 |
1222 // Empty |url_copy| is ok, and will effectively be a reload. | 1222 // Empty |url_copy| is ok, and will effectively be a reload. |
1223 // Skip the code below so an empty URL does not turn into "http://", which | 1223 // Skip the code below so an empty URL does not turn into "http://", which |
1224 // will cause GURL to fail a DCHECK. | 1224 // will cause GURL to fail a DCHECK. |
1225 if (!url_copy.empty()) { | 1225 if (!url_copy.empty()) { |
1226 // If |url_copy| starts with '#', then it's for the same URL with a | 1226 // If |url_copy| starts with '#', then it's for the same URL with a |
1227 // different URL fragment. | 1227 // different URL fragment. |
1228 if (url_copy[0] == '#') { | 1228 if (url_copy[0] == '#') { |
1229 url_copy = url_ + url_copy; | 1229 // if '#' is already present in |url_| then remove old tag and add new |
Lei Zhang
2015/01/08 04:55:54
The proper name for 'tag' is fragment BTW. http://
| |
1230 // |url_copy| tag. | |
1231 std::size_t index = url_.find('#'); | |
1232 if (index != std::string::npos) | |
1233 url_copy = url_.substr(0, index) + url_copy; | |
1234 else | |
1235 url_copy = url_ + url_copy; | |
1230 // Changing the href does not actually do anything when navigating in the | 1236 // Changing the href does not actually do anything when navigating in the |
1231 // same tab, so do the actual page scroll here. Then fall through so the | 1237 // same tab, so do the actual page scroll here. Then fall through so the |
1232 // href gets updated. | 1238 // href gets updated. |
1233 if (!open_in_new_tab) { | 1239 if (!open_in_new_tab) { |
1234 int page_number = GetInitialPage(url_copy); | 1240 int page_number = GetInitialPage(url_copy); |
1235 if (page_number >= 0) | 1241 if (page_number >= 0) |
1236 ScrollToPage(page_number); | 1242 ScrollToPage(page_number); |
1237 } | 1243 } |
1238 } | 1244 } |
1239 // If there's no scheme, add http. | 1245 // If there's no scheme, add http. |
(...skipping 1563 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
2803 return instance_->HasScriptableMethod(name, exception); | 2809 return instance_->HasScriptableMethod(name, exception); |
2804 } | 2810 } |
2805 | 2811 |
2806 pp::Var PDFScriptableObject::Call(const pp::Var& method, | 2812 pp::Var PDFScriptableObject::Call(const pp::Var& method, |
2807 const std::vector<pp::Var>& args, | 2813 const std::vector<pp::Var>& args, |
2808 pp::Var* exception) { | 2814 pp::Var* exception) { |
2809 return instance_->CallScriptableMethod(method, args, exception); | 2815 return instance_->CallScriptableMethod(method, args, exception); |
2810 } | 2816 } |
2811 | 2817 |
2812 } // namespace chrome_pdf | 2818 } // namespace chrome_pdf |
OLD | NEW |