navigation_task_id.cc 1.1 KB

123456789101112131415161718192021222324252627282930313233343536
  1. // Copyright 2019 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/navigation_task_id.h"
  5. #include <memory>
  6. #include "content/public/browser/navigation_entry.h"
  7. namespace sessions {
  8. const char kTaskIdKey[] = "task_id_data";
  9. NavigationTaskId::NavigationTaskId() {}
  10. NavigationTaskId::NavigationTaskId(const NavigationTaskId& navigation_task_id) =
  11. default;
  12. NavigationTaskId::~NavigationTaskId() {}
  13. NavigationTaskId* NavigationTaskId::Get(content::NavigationEntry* entry) {
  14. NavigationTaskId* navigation_task_id =
  15. static_cast<NavigationTaskId*>(entry->GetUserData(kTaskIdKey));
  16. if (navigation_task_id)
  17. return navigation_task_id;
  18. auto navigation_task_id_ptr = std::make_unique<NavigationTaskId>();
  19. navigation_task_id = navigation_task_id_ptr.get();
  20. entry->SetUserData(kTaskIdKey, std::move(navigation_task_id_ptr));
  21. return navigation_task_id;
  22. }
  23. std::unique_ptr<base::SupportsUserData::Data> NavigationTaskId::Clone() {
  24. return std::make_unique<NavigationTaskId>(*this);
  25. }
  26. } // namespace sessions