| OLD | NEW |
| 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 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 "chrome/browser/browser.h" | 5 #include "chrome/browser/browser.h" |
| 6 | 6 |
| 7 #if defined(OS_WIN) | 7 #if defined(OS_WIN) |
| 8 #include <shellapi.h> | 8 #include <shellapi.h> |
| 9 #include <windows.h> | 9 #include <windows.h> |
| 10 #endif // OS_WIN | 10 #endif // OS_WIN |
| (...skipping 1215 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1226 selected_contents->GetURL().GetOrigin() == | 1226 selected_contents->GetURL().GetOrigin() == |
| 1227 GURL(chrome::kChromeUINewTabURL).GetOrigin()) { | 1227 GURL(chrome::kChromeUINewTabURL).GetOrigin()) { |
| 1228 // If the |url| is within an app's web extent and it was typed into the | 1228 // If the |url| is within an app's web extent and it was typed into the |
| 1229 // omnibox of an NTP page, interpret as an app launch and close the NTP | 1229 // omnibox of an NTP page, interpret as an app launch and close the NTP |
| 1230 // tab. | 1230 // tab. |
| 1231 Browser::OpenApplication(profile(), extension, | 1231 Browser::OpenApplication(profile(), extension, |
| 1232 extension->launch_container()); | 1232 extension->launch_container()); |
| 1233 CloseTabContents(selected_contents); | 1233 CloseTabContents(selected_contents); |
| 1234 return; | 1234 return; |
| 1235 } | 1235 } |
| 1236 |
| 1237 if (selected_contents) { |
| 1238 // For the purposes of changing the window open disposition, the referrer |
| 1239 // is the current tab's URL. |
| 1240 open_disposition = AdjustWindowOpenDispositionForTab( |
| 1241 IsPinned(selected_contents), |
| 1242 url, |
| 1243 selected_contents->GetURL(), |
| 1244 location_bar->GetPageTransition(), |
| 1245 open_disposition); |
| 1246 } |
| 1236 } | 1247 } |
| 1237 | 1248 |
| 1238 OpenURLAtIndex(NULL, url, GURL(), | 1249 OpenURLAtIndex(NULL, url, GURL(), |
| 1239 open_disposition, | 1250 open_disposition, |
| 1240 location_bar->GetPageTransition(), -1, true); | 1251 location_bar->GetPageTransition(), -1, true); |
| 1241 } | 1252 } |
| 1242 | 1253 |
| 1243 void Browser::Stop() { | 1254 void Browser::Stop() { |
| 1244 UserMetrics::RecordAction(UserMetricsAction("Stop"), profile_); | 1255 UserMetrics::RecordAction(UserMetricsAction("Stop"), profile_); |
| 1245 GetSelectedTabContents()->Stop(); | 1256 GetSelectedTabContents()->Stop(); |
| (...skipping 2382 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3628 // static | 3639 // static |
| 3629 WindowOpenDisposition Browser::AdjustWindowOpenDispositionForTab( | 3640 WindowOpenDisposition Browser::AdjustWindowOpenDispositionForTab( |
| 3630 bool is_pinned, | 3641 bool is_pinned, |
| 3631 const GURL& url, | 3642 const GURL& url, |
| 3632 const GURL& referrer, | 3643 const GURL& referrer, |
| 3633 PageTransition::Type transition, | 3644 PageTransition::Type transition, |
| 3634 WindowOpenDisposition original_disposition) { | 3645 WindowOpenDisposition original_disposition) { |
| 3635 if (!is_pinned || | 3646 if (!is_pinned || |
| 3636 original_disposition != CURRENT_TAB || | 3647 original_disposition != CURRENT_TAB || |
| 3637 (transition != PageTransition::AUTO_BOOKMARK && | 3648 (transition != PageTransition::AUTO_BOOKMARK && |
| 3638 transition != PageTransition::LINK)) { | 3649 transition != PageTransition::LINK && |
| 3650 transition != PageTransition::TYPED)) { |
| 3639 return original_disposition; | 3651 return original_disposition; |
| 3640 } | 3652 } |
| 3641 | 3653 |
| 3642 bool url_is_http_or_https = | 3654 bool url_is_http_or_https = |
| 3643 url.SchemeIs(chrome::kHttpScheme) || | 3655 url.SchemeIs(chrome::kHttpScheme) || |
| 3644 url.SchemeIs(chrome::kHttpsScheme); | 3656 url.SchemeIs(chrome::kHttpsScheme); |
| 3645 bool referrer_is_http_or_https = | 3657 bool referrer_is_http_or_https = |
| 3646 referrer.SchemeIs(chrome::kHttpScheme) || | 3658 referrer.SchemeIs(chrome::kHttpScheme) || |
| 3647 referrer.SchemeIs(chrome::kHttpsScheme); | 3659 referrer.SchemeIs(chrome::kHttpsScheme); |
| 3648 bool scheme_matches = | 3660 bool scheme_matches = |
| (...skipping 294 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3943 } | 3955 } |
| 3944 | 3956 |
| 3945 bool Browser::IsPinned(TabContents* source) { | 3957 bool Browser::IsPinned(TabContents* source) { |
| 3946 int index = tabstrip_model_.GetIndexOfTabContents(source); | 3958 int index = tabstrip_model_.GetIndexOfTabContents(source); |
| 3947 if (index == TabStripModel::kNoTab) { | 3959 if (index == TabStripModel::kNoTab) { |
| 3948 NOTREACHED() << "IsPinned called for tab not in our strip"; | 3960 NOTREACHED() << "IsPinned called for tab not in our strip"; |
| 3949 return false; | 3961 return false; |
| 3950 } | 3962 } |
| 3951 return tabstrip_model_.IsTabPinned(index); | 3963 return tabstrip_model_.IsTabPinned(index); |
| 3952 } | 3964 } |
| OLD | NEW |