Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(14)

Side by Side Diff: chrome/browser/extensions/extension_tab_util.cc

Issue 2434063002: Move extensions code from WebContents::GetURL to GetLastCommittedURL.
Patch Set: Refactor to simplify. Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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"
(...skipping 315 matching lines...) Expand 10 before | Expand all | Expand 10 after
326 326
327 int ExtensionTabUtil::GetWindowIdOfTab(const WebContents* web_contents) { 327 int ExtensionTabUtil::GetWindowIdOfTab(const WebContents* web_contents) {
328 return SessionTabHelper::IdForWindowContainingTab(web_contents); 328 return SessionTabHelper::IdForWindowContainingTab(web_contents);
329 } 329 }
330 330
331 // static 331 // static
332 std::unique_ptr<api::tabs::Tab> ExtensionTabUtil::CreateTabObject( 332 std::unique_ptr<api::tabs::Tab> ExtensionTabUtil::CreateTabObject(
333 WebContents* contents, 333 WebContents* contents,
334 TabStripModel* tab_strip, 334 TabStripModel* tab_strip,
335 int tab_index, 335 int tab_index,
336 const Extension* extension) { 336 const Extension* extension,
337 UrlType url_type) {
337 // If we have a matching AppWindow with a controller, get the tab value 338 // If we have a matching AppWindow with a controller, get the tab value
338 // from its controller instead. 339 // from its controller instead.
339 WindowController* controller = GetAppWindowController(contents); 340 WindowController* controller = GetAppWindowController(contents);
340 if (controller && 341 if (controller &&
341 (!extension || controller->IsVisibleToExtension(extension))) { 342 (!extension || controller->IsVisibleToExtension(extension))) {
342 return controller->CreateTabObject(extension, tab_index); 343 return controller->CreateTabObject(extension, tab_index);
343 } 344 }
344 std::unique_ptr<api::tabs::Tab> result = 345 std::unique_ptr<api::tabs::Tab> result =
345 CreateTabObject(contents, tab_strip, tab_index); 346 CreateTabObject(contents, tab_strip, tab_index, url_type);
346 ScrubTabForExtension(extension, contents, result.get()); 347 ScrubTabForExtension(extension, contents, result.get());
347 return result; 348 return result;
348 } 349 }
349 350
350 std::unique_ptr<base::ListValue> ExtensionTabUtil::CreateTabList( 351 std::unique_ptr<base::ListValue> ExtensionTabUtil::CreateTabList(
351 const Browser* browser, 352 const Browser* browser,
352 const Extension* extension) { 353 const Extension* extension) {
353 std::unique_ptr<base::ListValue> tab_list(new base::ListValue()); 354 std::unique_ptr<base::ListValue> tab_list(new base::ListValue());
354 TabStripModel* tab_strip = browser->tab_strip_model(); 355 TabStripModel* tab_strip = browser->tab_strip_model();
355 for (int i = 0; i < tab_strip->count(); ++i) { 356 for (int i = 0; i < tab_strip->count(); ++i) {
356 tab_list->Append( 357 tab_list->Append(
357 CreateTabObject(tab_strip->GetWebContentsAt(i), tab_strip, i, extension) 358 CreateTabObject(tab_strip->GetWebContentsAt(i), tab_strip, i, extension)
358 ->ToValue()); 359 ->ToValue());
359 } 360 }
360 361
361 return tab_list; 362 return tab_list;
362 } 363 }
363 364
364 // static 365 // static
365 std::unique_ptr<api::tabs::Tab> ExtensionTabUtil::CreateTabObject( 366 std::unique_ptr<api::tabs::Tab> ExtensionTabUtil::CreateTabObject(
366 content::WebContents* contents, 367 content::WebContents* contents,
367 TabStripModel* tab_strip, 368 TabStripModel* tab_strip,
368 int tab_index) { 369 int tab_index,
370 UrlType url_type) {
369 // If we have a matching AppWindow with a controller, get the tab value 371 // If we have a matching AppWindow with a controller, get the tab value
370 // from its controller instead. 372 // from its controller instead.
371 WindowController* controller = GetAppWindowController(contents); 373 WindowController* controller = GetAppWindowController(contents);
372 if (controller) 374 if (controller)
373 return controller->CreateTabObject(nullptr, tab_index); 375 return controller->CreateTabObject(nullptr, tab_index);
374 376
375 if (!tab_strip) 377 if (!tab_strip)
376 ExtensionTabUtil::GetTabStripModel(contents, &tab_strip, &tab_index); 378 ExtensionTabUtil::GetTabStripModel(contents, &tab_strip, &tab_index);
377 bool is_loading = contents->IsLoading(); 379 bool is_loading = contents->IsLoading();
378 std::unique_ptr<api::tabs::Tab> tab_object(new api::tabs::Tab); 380 std::unique_ptr<api::tabs::Tab> tab_object(new api::tabs::Tab);
(...skipping 10 matching lines...) Expand all
389 g_browser_process->GetTabManager()->IsTabDiscarded(contents); 391 g_browser_process->GetTabManager()->IsTabDiscarded(contents);
390 tab_object->auto_discardable = 392 tab_object->auto_discardable =
391 g_browser_process->GetTabManager()->IsTabAutoDiscardable(contents); 393 g_browser_process->GetTabManager()->IsTabAutoDiscardable(contents);
392 tab_object->muted_info = CreateMutedInfo(contents); 394 tab_object->muted_info = CreateMutedInfo(contents);
393 tab_object->incognito = contents->GetBrowserContext()->IsOffTheRecord(); 395 tab_object->incognito = contents->GetBrowserContext()->IsOffTheRecord();
394 tab_object->width.reset( 396 tab_object->width.reset(
395 new int(contents->GetContainerBounds().size().width())); 397 new int(contents->GetContainerBounds().size().width()));
396 tab_object->height.reset( 398 tab_object->height.reset(
397 new int(contents->GetContainerBounds().size().height())); 399 new int(contents->GetContainerBounds().size().height()));
398 400
399 tab_object->url.reset(new std::string(contents->GetURL().spec())); 401 GURL url;
402 switch (url_type) {
403 case LastCommitted:
404 url = contents->GetLastCommittedURL();
405 case Visible:
406 url = contents->GetVisibleURL();
407 }
408 tab_object->url.reset(new std::string(url.spec()));
400 tab_object->title.reset( 409 tab_object->title.reset(
401 new std::string(base::UTF16ToUTF8(contents->GetTitle()))); 410 new std::string(base::UTF16ToUTF8(contents->GetTitle())));
402 NavigationEntry* entry = contents->GetController().GetVisibleEntry(); 411 NavigationEntry* entry = contents->GetController().GetVisibleEntry();
403 if (entry && entry->GetFavicon().valid) 412 if (entry && entry->GetFavicon().valid)
404 tab_object->fav_icon_url.reset( 413 tab_object->fav_icon_url.reset(
405 new std::string(entry->GetFavicon().url.spec())); 414 new std::string(entry->GetFavicon().url.spec()));
406 if (tab_strip) { 415 if (tab_strip) {
407 WebContents* opener = tab_strip->GetOpenerOfWebContentsAt(tab_index); 416 WebContents* opener = tab_strip->GetOpenerOfWebContentsAt(tab_index);
408 if (opener) 417 if (opener)
409 tab_object->opener_tab_id.reset(new int(GetTabIdForExtensions(opener))); 418 tab_object->opener_tab_id.reset(new int(GetTabIdForExtensions(opener)));
(...skipping 256 matching lines...) Expand 10 before | Expand all | Expand 10 after
666 chrome::ShowSingletonTabOverwritingNTP(browser, params); 675 chrome::ShowSingletonTabOverwritingNTP(browser, params);
667 return true; 676 return true;
668 } 677 }
669 678
670 // static 679 // static
671 bool ExtensionTabUtil::BrowserSupportsTabs(Browser* browser) { 680 bool ExtensionTabUtil::BrowserSupportsTabs(Browser* browser) {
672 return browser && browser->tab_strip_model() && !browser->is_devtools(); 681 return browser && browser->tab_strip_model() && !browser->is_devtools();
673 } 682 }
674 683
675 } // namespace extensions 684 } // namespace extensions
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698