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/extensions/extension_tabs_module.h" | 5 #include "chrome/browser/extensions/extension_tabs_module.h" |
6 | 6 |
7 #include "base/base64.h" | 7 #include "base/base64.h" |
8 #include "base/string_number_conversions.h" | 8 #include "base/string_number_conversions.h" |
9 #include "base/string_util.h" | 9 #include "base/string_util.h" |
10 #include "base/stringprintf.h" | 10 #include "base/stringprintf.h" |
11 #include "base/utf_string_conversions.h" | 11 #include "base/utf_string_conversions.h" |
12 #include "chrome/browser/browser.h" | 12 #include "chrome/browser/browser.h" |
13 #include "chrome/browser/browser_list.h" | 13 #include "chrome/browser/browser_list.h" |
| 14 #include "chrome/browser/browser_navigator.h" |
14 #include "chrome/browser/browser_window.h" | 15 #include "chrome/browser/browser_window.h" |
15 #include "chrome/browser/extensions/extension_function_dispatcher.h" | 16 #include "chrome/browser/extensions/extension_function_dispatcher.h" |
16 #include "chrome/browser/extensions/extension_host.h" | 17 #include "chrome/browser/extensions/extension_host.h" |
17 #include "chrome/browser/extensions/extension_infobar_delegate.h" | 18 #include "chrome/browser/extensions/extension_infobar_delegate.h" |
18 #include "chrome/browser/extensions/extension_tabs_module_constants.h" | 19 #include "chrome/browser/extensions/extension_tabs_module_constants.h" |
19 #include "chrome/browser/extensions/extensions_service.h" | 20 #include "chrome/browser/extensions/extensions_service.h" |
20 #include "chrome/browser/profile.h" | 21 #include "chrome/browser/profile.h" |
21 #include "chrome/browser/renderer_host/backing_store.h" | 22 #include "chrome/browser/renderer_host/backing_store.h" |
22 #include "chrome/browser/renderer_host/render_view_host.h" | 23 #include "chrome/browser/renderer_host/render_view_host.h" |
23 #include "chrome/browser/renderer_host/render_view_host_delegate.h" | 24 #include "chrome/browser/renderer_host/render_view_host_delegate.h" |
(...skipping 375 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
399 window_type = Browser::TYPE_NORMAL; | 400 window_type = Browser::TYPE_NORMAL; |
400 } else if (type_str == keys::kWindowTypeValuePopup) { | 401 } else if (type_str == keys::kWindowTypeValuePopup) { |
401 window_type = Browser::TYPE_APP_POPUP; | 402 window_type = Browser::TYPE_APP_POPUP; |
402 } else { | 403 } else { |
403 EXTENSION_FUNCTION_VALIDATE(false); | 404 EXTENSION_FUNCTION_VALIDATE(false); |
404 } | 405 } |
405 } | 406 } |
406 } | 407 } |
407 | 408 |
408 Browser* new_window = Browser::CreateForType(window_type, window_profile); | 409 Browser* new_window = Browser::CreateForType(window_type, window_profile); |
409 for (std::vector<GURL>::iterator i = urls.begin(); i != urls.end(); ++i) { | 410 for (std::vector<GURL>::iterator i = urls.begin(); i != urls.end(); ++i) |
410 Browser::AddTabWithURLParams addTabParams = | 411 new_window->AddSelectedTabWithURL(*i, PageTransition::LINK); |
411 Browser::AddTabWithURLParams(*i, PageTransition::LINK); | |
412 new_window->AddTabWithURL(&addTabParams); | |
413 } | |
414 if (urls.size() == 0) | 412 if (urls.size() == 0) |
415 new_window->NewTab(); | 413 new_window->NewTab(); |
416 new_window->SelectNumberedTab(0); | 414 new_window->SelectNumberedTab(0); |
417 if (window_type & Browser::TYPE_POPUP) | 415 if (window_type & Browser::TYPE_POPUP) |
418 new_window->window()->SetBounds(popup_bounds); | 416 new_window->window()->SetBounds(popup_bounds); |
419 else | 417 else |
420 new_window->window()->SetBounds(window_bounds); | 418 new_window->window()->SetBounds(window_bounds); |
421 new_window->window()->Show(); | 419 new_window->window()->Show(); |
422 | 420 |
423 if (new_window->profile()->IsOffTheRecord() && !include_incognito()) { | 421 if (new_window->profile()->IsOffTheRecord() && !include_incognito()) { |
(...skipping 195 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
619 if (args->HasKey(keys::kIndexKey)) | 617 if (args->HasKey(keys::kIndexKey)) |
620 EXTENSION_FUNCTION_VALIDATE(args->GetInteger(keys::kIndexKey, &index)); | 618 EXTENSION_FUNCTION_VALIDATE(args->GetInteger(keys::kIndexKey, &index)); |
621 | 619 |
622 TabStripModel* tab_strip = browser->tabstrip_model(); | 620 TabStripModel* tab_strip = browser->tabstrip_model(); |
623 | 621 |
624 index = std::min(std::max(index, -1), tab_strip->count()); | 622 index = std::min(std::max(index, -1), tab_strip->count()); |
625 | 623 |
626 int add_types = selected ? TabStripModel::ADD_SELECTED : | 624 int add_types = selected ? TabStripModel::ADD_SELECTED : |
627 TabStripModel::ADD_NONE; | 625 TabStripModel::ADD_NONE; |
628 add_types |= TabStripModel::ADD_FORCE_INDEX; | 626 add_types |= TabStripModel::ADD_FORCE_INDEX; |
629 Browser::AddTabWithURLParams params(url, PageTransition::LINK); | 627 browser::NavigateParams params(browser, url, PageTransition::LINK); |
630 params.index = index; | 628 params.disposition = selected ? NEW_FOREGROUND_TAB : NEW_BACKGROUND_TAB; |
631 params.add_types = add_types; | 629 params.tabstrip_index = index; |
632 TabContents* contents = browser->AddTabWithURL(¶ms); | 630 params.tabstrip_add_types = add_types; |
633 index = browser->tabstrip_model()->GetIndexOfTabContents(contents); | 631 browser::Navigate(¶ms); |
634 | 632 |
635 if (selected) | 633 if (selected) |
636 contents->view()->SetInitialFocus(); | 634 params.target_contents->view()->SetInitialFocus(); |
637 | 635 |
638 // Return data about the newly created tab. | 636 // Return data about the newly created tab. |
639 if (has_callback()) | 637 if (has_callback()) { |
640 result_.reset(ExtensionTabUtil::CreateTabValue(contents, | 638 result_.reset(ExtensionTabUtil::CreateTabValue( |
641 browser->tabstrip_model(), | 639 params.target_contents, |
642 index)); | 640 params.browser->tabstrip_model(), |
| 641 params.browser->tabstrip_model()->GetIndexOfTabContents( |
| 642 params.target_contents))); |
| 643 } |
643 | 644 |
644 return true; | 645 return true; |
645 } | 646 } |
646 | 647 |
647 bool GetTabFunction::RunImpl() { | 648 bool GetTabFunction::RunImpl() { |
648 int tab_id; | 649 int tab_id; |
649 EXTENSION_FUNCTION_VALIDATE(args_->GetInteger(0, &tab_id)); | 650 EXTENSION_FUNCTION_VALIDATE(args_->GetInteger(0, &tab_id)); |
650 | 651 |
651 TabStripModel* tab_strip = NULL; | 652 TabStripModel* tab_strip = NULL; |
652 TabContents* contents = NULL; | 653 TabContents* contents = NULL; |
(...skipping 496 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1149 } | 1150 } |
1150 | 1151 |
1151 static GURL ResolvePossiblyRelativeURL(std::string url_string, | 1152 static GURL ResolvePossiblyRelativeURL(std::string url_string, |
1152 const Extension* extension) { | 1153 const Extension* extension) { |
1153 GURL url = GURL(url_string); | 1154 GURL url = GURL(url_string); |
1154 if (!url.is_valid()) | 1155 if (!url.is_valid()) |
1155 url = extension->GetResourceURL(url_string); | 1156 url = extension->GetResourceURL(url_string); |
1156 | 1157 |
1157 return url; | 1158 return url; |
1158 } | 1159 } |
OLD | NEW |