| 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 "chrome/browser/extensions/extension_tab_util.h" | 5 #include "chrome/browser/extensions/extension_tab_util.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 | 8 |
| 9 #include "base/macros.h" | 9 #include "base/macros.h" |
| 10 #include "base/strings/string_number_conversions.h" | 10 #include "base/strings/string_number_conversions.h" |
| 11 #include "base/strings/stringprintf.h" | 11 #include "base/strings/stringprintf.h" |
| 12 #include "chrome/browser/extensions/api/tabs/tabs_constants.h" | 12 #include "chrome/browser/extensions/api/tabs/tabs_constants.h" |
| 13 #include "chrome/browser/extensions/chrome_extension_function.h" | 13 #include "chrome/browser/extensions/chrome_extension_function.h" |
| 14 #include "chrome/browser/extensions/chrome_extension_function_details.h" | 14 #include "chrome/browser/extensions/chrome_extension_function_details.h" |
| 15 #include "chrome/browser/extensions/tab_helper.h" | 15 #include "chrome/browser/extensions/tab_helper.h" |
| 16 #include "chrome/browser/extensions/window_controller.h" | 16 #include "chrome/browser/extensions/window_controller.h" |
| 17 #include "chrome/browser/extensions/window_controller_list.h" | 17 #include "chrome/browser/extensions/window_controller_list.h" |
| 18 #include "chrome/browser/profiles/profile.h" | 18 #include "chrome/browser/profiles/profile.h" |
| 19 #include "chrome/browser/sessions/session_tab_helper.h" | 19 #include "chrome/browser/sessions/session_tab_helper.h" |
| 20 #include "chrome/browser/ui/browser.h" | 20 #include "chrome/browser/ui/browser.h" |
| 21 #include "chrome/browser/ui/browser_finder.h" | 21 #include "chrome/browser/ui/browser_finder.h" |
| 22 #include "chrome/browser/ui/browser_iterator.h" | |
| 23 #include "chrome/browser/ui/browser_navigator_params.h" | 22 #include "chrome/browser/ui/browser_navigator_params.h" |
| 24 #include "chrome/browser/ui/browser_window.h" | 23 #include "chrome/browser/ui/browser_window.h" |
| 25 #include "chrome/browser/ui/scoped_tabbed_browser_displayer.h" | 24 #include "chrome/browser/ui/scoped_tabbed_browser_displayer.h" |
| 26 #include "chrome/browser/ui/singleton_tabs.h" | 25 #include "chrome/browser/ui/singleton_tabs.h" |
| 27 #include "chrome/browser/ui/tab_contents/tab_contents_iterator.h" | 26 #include "chrome/browser/ui/tab_contents/tab_contents_iterator.h" |
| 28 #include "chrome/browser/ui/tabs/tab_strip_model.h" | 27 #include "chrome/browser/ui/tabs/tab_strip_model.h" |
| 29 #include "chrome/browser/ui/tabs/tab_utils.h" | 28 #include "chrome/browser/ui/tabs/tab_utils.h" |
| 30 #include "chrome/common/extensions/api/tabs.h" | 29 #include "chrome/common/extensions/api/tabs.h" |
| 31 #include "chrome/common/url_constants.h" | 30 #include "chrome/common/url_constants.h" |
| 32 #include "components/url_formatter/url_fixer.h" | 31 #include "components/url_formatter/url_fixer.h" |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 70 // |error_message| can optionally be passed in and will be set with an | 69 // |error_message| can optionally be passed in and will be set with an |
| 71 // appropriate message if the window cannot be found by id. | 70 // appropriate message if the window cannot be found by id. |
| 72 Browser* GetBrowserInProfileWithId(Profile* profile, | 71 Browser* GetBrowserInProfileWithId(Profile* profile, |
| 73 const int window_id, | 72 const int window_id, |
| 74 bool include_incognito, | 73 bool include_incognito, |
| 75 std::string* error_message) { | 74 std::string* error_message) { |
| 76 Profile* incognito_profile = | 75 Profile* incognito_profile = |
| 77 include_incognito && profile->HasOffTheRecordProfile() | 76 include_incognito && profile->HasOffTheRecordProfile() |
| 78 ? profile->GetOffTheRecordProfile() | 77 ? profile->GetOffTheRecordProfile() |
| 79 : NULL; | 78 : NULL; |
| 80 for (chrome::BrowserIterator it; !it.done(); it.Next()) { | 79 for (auto& browser : *BrowserList::GetInstance()) { |
| 81 Browser* browser = *it; | |
| 82 if ((browser->profile() == profile || | 80 if ((browser->profile() == profile || |
| 83 browser->profile() == incognito_profile) && | 81 browser->profile() == incognito_profile) && |
| 84 ExtensionTabUtil::GetWindowId(browser) == window_id && | 82 ExtensionTabUtil::GetWindowId(browser) == window_id && |
| 85 browser->window()) { | 83 browser->window()) { |
| 86 return browser; | 84 return browser; |
| 87 } | 85 } |
| 88 } | 86 } |
| 89 | 87 |
| 90 if (error_message) | 88 if (error_message) |
| 91 *error_message = ErrorUtils::FormatErrorMessage( | 89 *error_message = ErrorUtils::FormatErrorMessage( |
| (...skipping 222 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 314 error); | 312 error); |
| 315 } | 313 } |
| 316 } | 314 } |
| 317 | 315 |
| 318 int ExtensionTabUtil::GetWindowId(const Browser* browser) { | 316 int ExtensionTabUtil::GetWindowId(const Browser* browser) { |
| 319 return browser->session_id().id(); | 317 return browser->session_id().id(); |
| 320 } | 318 } |
| 321 | 319 |
| 322 int ExtensionTabUtil::GetWindowIdOfTabStripModel( | 320 int ExtensionTabUtil::GetWindowIdOfTabStripModel( |
| 323 const TabStripModel* tab_strip_model) { | 321 const TabStripModel* tab_strip_model) { |
| 324 for (chrome::BrowserIterator it; !it.done(); it.Next()) { | 322 for (auto& browser : *BrowserList::GetInstance()) { |
| 325 if (it->tab_strip_model() == tab_strip_model) | 323 if (browser->tab_strip_model() == tab_strip_model) |
| 326 return GetWindowId(*it); | 324 return GetWindowId(browser); |
| 327 } | 325 } |
| 328 return -1; | 326 return -1; |
| 329 } | 327 } |
| 330 | 328 |
| 331 int ExtensionTabUtil::GetTabId(const WebContents* web_contents) { | 329 int ExtensionTabUtil::GetTabId(const WebContents* web_contents) { |
| 332 return SessionTabHelper::IdForTab(web_contents); | 330 return SessionTabHelper::IdForTab(web_contents); |
| 333 } | 331 } |
| 334 | 332 |
| 335 std::string ExtensionTabUtil::GetTabStatusText(bool is_loading) { | 333 std::string ExtensionTabUtil::GetTabStatusText(bool is_loading) { |
| 336 return is_loading ? keys::kStatusValueLoading : keys::kStatusValueComplete; | 334 return is_loading ? keys::kStatusValueLoading : keys::kStatusValueComplete; |
| (...skipping 145 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 482 } | 480 } |
| 483 } | 481 } |
| 484 | 482 |
| 485 bool ExtensionTabUtil::GetTabStripModel(const WebContents* web_contents, | 483 bool ExtensionTabUtil::GetTabStripModel(const WebContents* web_contents, |
| 486 TabStripModel** tab_strip_model, | 484 TabStripModel** tab_strip_model, |
| 487 int* tab_index) { | 485 int* tab_index) { |
| 488 DCHECK(web_contents); | 486 DCHECK(web_contents); |
| 489 DCHECK(tab_strip_model); | 487 DCHECK(tab_strip_model); |
| 490 DCHECK(tab_index); | 488 DCHECK(tab_index); |
| 491 | 489 |
| 492 for (chrome::BrowserIterator it; !it.done(); it.Next()) { | 490 for (auto& browser : *BrowserList::GetInstance()) { |
| 493 TabStripModel* tab_strip = it->tab_strip_model(); | 491 TabStripModel* tab_strip = browser->tab_strip_model(); |
| 494 int index = tab_strip->GetIndexOfWebContents(web_contents); | 492 int index = tab_strip->GetIndexOfWebContents(web_contents); |
| 495 if (index != -1) { | 493 if (index != -1) { |
| 496 *tab_strip_model = tab_strip; | 494 *tab_strip_model = tab_strip; |
| 497 *tab_index = index; | 495 *tab_index = index; |
| 498 return true; | 496 return true; |
| 499 } | 497 } |
| 500 } | 498 } |
| 501 | 499 |
| 502 return false; | 500 return false; |
| 503 } | 501 } |
| (...skipping 20 matching lines...) Expand all Loading... |
| 524 Browser** browser, | 522 Browser** browser, |
| 525 TabStripModel** tab_strip, | 523 TabStripModel** tab_strip, |
| 526 WebContents** contents, | 524 WebContents** contents, |
| 527 int* tab_index) { | 525 int* tab_index) { |
| 528 if (tab_id == api::tabs::TAB_ID_NONE) | 526 if (tab_id == api::tabs::TAB_ID_NONE) |
| 529 return false; | 527 return false; |
| 530 Profile* profile = Profile::FromBrowserContext(browser_context); | 528 Profile* profile = Profile::FromBrowserContext(browser_context); |
| 531 Profile* incognito_profile = | 529 Profile* incognito_profile = |
| 532 include_incognito && profile->HasOffTheRecordProfile() ? | 530 include_incognito && profile->HasOffTheRecordProfile() ? |
| 533 profile->GetOffTheRecordProfile() : NULL; | 531 profile->GetOffTheRecordProfile() : NULL; |
| 534 for (chrome::BrowserIterator it; !it.done(); it.Next()) { | 532 for (auto& target_browser : *BrowserList::GetInstance()) { |
| 535 Browser* target_browser = *it; | |
| 536 if (target_browser->profile() == profile || | 533 if (target_browser->profile() == profile || |
| 537 target_browser->profile() == incognito_profile) { | 534 target_browser->profile() == incognito_profile) { |
| 538 TabStripModel* target_tab_strip = target_browser->tab_strip_model(); | 535 TabStripModel* target_tab_strip = target_browser->tab_strip_model(); |
| 539 for (int i = 0; i < target_tab_strip->count(); ++i) { | 536 for (int i = 0; i < target_tab_strip->count(); ++i) { |
| 540 WebContents* target_contents = target_tab_strip->GetWebContentsAt(i); | 537 WebContents* target_contents = target_tab_strip->GetWebContentsAt(i); |
| 541 if (SessionTabHelper::IdForTab(target_contents) == tab_id) { | 538 if (SessionTabHelper::IdForTab(target_contents) == tab_id) { |
| 542 if (browser) | 539 if (browser) |
| 543 *browser = target_browser; | 540 *browser = target_browser; |
| 544 if (tab_strip) | 541 if (tab_strip) |
| 545 *tab_strip = target_tab_strip; | 542 *tab_strip = target_tab_strip; |
| (...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 676 chrome::ShowSingletonTabOverwritingNTP(browser, params); | 673 chrome::ShowSingletonTabOverwritingNTP(browser, params); |
| 677 return true; | 674 return true; |
| 678 } | 675 } |
| 679 | 676 |
| 680 // static | 677 // static |
| 681 bool ExtensionTabUtil::BrowserSupportsTabs(Browser* browser) { | 678 bool ExtensionTabUtil::BrowserSupportsTabs(Browser* browser) { |
| 682 return browser && browser->tab_strip_model() && !browser->is_devtools(); | 679 return browser && browser->tab_strip_model() && !browser->is_devtools(); |
| 683 } | 680 } |
| 684 | 681 |
| 685 } // namespace extensions | 682 } // namespace extensions |
| OLD | NEW |