ios_webstate_live_tab.mm 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. // Copyright 2015 The Chromium Authors. All rights reserved.
  2. // Use of this source code is governed by a BSD-style license that can be
  3. // found in the LICENSE file.
  4. #include "components/sessions/ios/ios_webstate_live_tab.h"
  5. #include "base/memory/ptr_util.h"
  6. #include "ios/web/public/navigation/navigation_manager.h"
  7. #if !defined(__has_feature) || !__has_feature(objc_arc)
  8. #error "This file requires ARC support."
  9. #endif
  10. namespace {
  11. const char kIOSWebStateLiveTabWebStateUserDataKey[] = "ios_live_tab";
  12. }
  13. namespace sessions {
  14. // static
  15. IOSWebStateLiveTab* IOSWebStateLiveTab::GetForWebState(
  16. web::WebState* web_state) {
  17. if (!web_state->GetUserData(kIOSWebStateLiveTabWebStateUserDataKey)) {
  18. web_state->SetUserData(kIOSWebStateLiveTabWebStateUserDataKey,
  19. base::WrapUnique(new IOSWebStateLiveTab(web_state)));
  20. }
  21. return static_cast<IOSWebStateLiveTab*>(
  22. web_state->GetUserData(kIOSWebStateLiveTabWebStateUserDataKey));
  23. }
  24. IOSWebStateLiveTab::IOSWebStateLiveTab(web::WebState* web_state)
  25. : web_state_(web_state) {}
  26. IOSWebStateLiveTab::~IOSWebStateLiveTab() {}
  27. bool IOSWebStateLiveTab::IsInitialBlankNavigation() {
  28. return navigation_manager()->GetItemCount() == 0;
  29. }
  30. int IOSWebStateLiveTab::GetCurrentEntryIndex() {
  31. return navigation_manager()->GetLastCommittedItemIndex();
  32. }
  33. int IOSWebStateLiveTab::GetPendingEntryIndex() {
  34. return navigation_manager()->GetPendingItemIndex();
  35. }
  36. sessions::SerializedNavigationEntry IOSWebStateLiveTab::GetEntryAtIndex(
  37. int index) {
  38. return sessions::IOSSerializedNavigationBuilder::FromNavigationItem(
  39. index, *navigation_manager()->GetItemAtIndex(index));
  40. }
  41. sessions::SerializedNavigationEntry IOSWebStateLiveTab::GetPendingEntry() {
  42. return sessions::IOSSerializedNavigationBuilder::FromNavigationItem(
  43. GetPendingEntryIndex(), *navigation_manager()->GetPendingItem());
  44. }
  45. int IOSWebStateLiveTab::GetEntryCount() {
  46. return navigation_manager()->GetItemCount();
  47. }
  48. sessions::SerializedUserAgentOverride
  49. IOSWebStateLiveTab::GetUserAgentOverride() {
  50. // Dynamic user agent overrides are not supported on iOS.
  51. return sessions::SerializedUserAgentOverride();
  52. }
  53. const web::WebState* IOSWebStateLiveTab::GetWebState() const {
  54. return web_state_;
  55. }
  56. } // namespace sessions