navigation_ui_data_impl.cc 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. // Copyright 2020 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 "weblayer/browser/navigation_ui_data_impl.h"
  5. #include "build/build_config.h"
  6. namespace weblayer {
  7. #if BUILDFLAG(IS_ANDROID)
  8. NavigationUIDataImpl::ResponseHolder::ResponseHolder(
  9. std::unique_ptr<embedder_support::WebResourceResponse> response)
  10. : response_(std::move(response)) {}
  11. NavigationUIDataImpl::ResponseHolder::~ResponseHolder() = default;
  12. std::unique_ptr<embedder_support::WebResourceResponse>
  13. NavigationUIDataImpl::ResponseHolder::TakeResponse() {
  14. return std::move(response_);
  15. }
  16. #endif // BUILDFLAG(IS_ANDROID)
  17. NavigationUIDataImpl::NavigationUIDataImpl() = default;
  18. NavigationUIDataImpl::~NavigationUIDataImpl() = default;
  19. std::unique_ptr<content::NavigationUIData> NavigationUIDataImpl::Clone() {
  20. auto rv = std::make_unique<NavigationUIDataImpl>();
  21. rv->disable_network_error_auto_reload_ = disable_network_error_auto_reload_;
  22. #if BUILDFLAG(IS_ANDROID)
  23. rv->intent_launches_allowed_in_background_ =
  24. intent_launches_allowed_in_background_;
  25. rv->response_holder_ = response_holder_;
  26. #endif // BUILDFLAG(IS_ANDROID)
  27. return rv;
  28. }
  29. #if BUILDFLAG(IS_ANDROID)
  30. void NavigationUIDataImpl::SetResponse(
  31. std::unique_ptr<embedder_support::WebResourceResponse> response) {
  32. DCHECK(!response_holder_);
  33. response_holder_ = base::MakeRefCounted<ResponseHolder>(std::move(response));
  34. }
  35. std::unique_ptr<embedder_support::WebResourceResponse>
  36. NavigationUIDataImpl::TakeResponse() {
  37. if (!response_holder_)
  38. return nullptr;
  39. return response_holder_->TakeResponse();
  40. }
  41. #endif // BUILDFLAG(IS_ANDROID)
  42. } // namespace weblayer