content_live_tab.cc 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  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/content/content_live_tab.h"
  5. #include <memory>
  6. #include "base/memory/ptr_util.h"
  7. #include "components/sessions/content/content_platform_specific_tab_data.h"
  8. #include "third_party/blink/public/common/user_agent/user_agent_metadata.h"
  9. namespace {
  10. const char kContentLiveTabWebContentsUserDataKey[] = "content_live_tab";
  11. }
  12. namespace sessions {
  13. // static
  14. ContentLiveTab* ContentLiveTab::GetForWebContents(
  15. content::WebContents* contents) {
  16. if (!contents->GetUserData(kContentLiveTabWebContentsUserDataKey)) {
  17. contents->SetUserData(kContentLiveTabWebContentsUserDataKey,
  18. base::WrapUnique(new ContentLiveTab(contents)));
  19. }
  20. return static_cast<ContentLiveTab*>(contents->GetUserData(
  21. kContentLiveTabWebContentsUserDataKey));
  22. }
  23. ContentLiveTab::ContentLiveTab(content::WebContents* contents)
  24. : web_contents_(contents) {}
  25. ContentLiveTab::~ContentLiveTab() {}
  26. bool ContentLiveTab::IsInitialBlankNavigation() {
  27. return navigation_controller().IsInitialBlankNavigation();
  28. }
  29. int ContentLiveTab::GetCurrentEntryIndex() {
  30. return navigation_controller().GetCurrentEntryIndex();
  31. }
  32. int ContentLiveTab::GetPendingEntryIndex() {
  33. return navigation_controller().GetPendingEntryIndex();
  34. }
  35. sessions::SerializedNavigationEntry ContentLiveTab::GetEntryAtIndex(int index) {
  36. return sessions::ContentSerializedNavigationBuilder::FromNavigationEntry(
  37. index, navigation_controller().GetEntryAtIndex(index));
  38. }
  39. sessions::SerializedNavigationEntry ContentLiveTab::GetPendingEntry() {
  40. return sessions::ContentSerializedNavigationBuilder::FromNavigationEntry(
  41. GetPendingEntryIndex(), navigation_controller().GetPendingEntry());
  42. }
  43. int ContentLiveTab::GetEntryCount() {
  44. return navigation_controller().GetEntryCount();
  45. }
  46. std::unique_ptr<sessions::PlatformSpecificTabData>
  47. ContentLiveTab::GetPlatformSpecificTabData() {
  48. return std::make_unique<sessions::ContentPlatformSpecificTabData>(
  49. web_contents());
  50. }
  51. SerializedUserAgentOverride ContentLiveTab::GetUserAgentOverride() {
  52. const blink::UserAgentOverride& ua_override =
  53. web_contents()->GetUserAgentOverride();
  54. SerializedUserAgentOverride serialized_ua_override;
  55. serialized_ua_override.ua_string_override = ua_override.ua_string_override;
  56. serialized_ua_override.opaque_ua_metadata_override =
  57. blink::UserAgentMetadata::Marshal(ua_override.ua_metadata_override);
  58. return serialized_ua_override;
  59. }
  60. } // namespace sessions