fake_context.cc 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. // Copyright 2018 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 "fuchsia_web/webengine/fake_context.h"
  5. #include "base/fuchsia/fuchsia_logging.h"
  6. #include "base/notreached.h"
  7. FakeFrame::FakeFrame(fidl::InterfaceRequest<fuchsia::web::Frame> request)
  8. : binding_(this, std::move(request)) {
  9. binding_.set_error_handler([this](zx_status_t status) {
  10. ZX_CHECK(status == ZX_ERR_PEER_CLOSED, status);
  11. delete this;
  12. });
  13. }
  14. FakeFrame::~FakeFrame() = default;
  15. void FakeFrame::GetNavigationController(
  16. fidl::InterfaceRequest<fuchsia::web::NavigationController> controller) {
  17. if (navigation_controller_) {
  18. navigation_controller_bindings_.AddBinding(navigation_controller_,
  19. std::move(controller));
  20. }
  21. }
  22. void FakeFrame::SetNavigationEventListener(
  23. fidl::InterfaceHandle<fuchsia::web::NavigationEventListener> listener) {
  24. SetNavigationEventListener2(std::move(listener), /*flags=*/{});
  25. }
  26. void FakeFrame::SetNavigationEventListener2(
  27. fidl::InterfaceHandle<fuchsia::web::NavigationEventListener> listener,
  28. fuchsia::web::NavigationEventListenerFlags flags) {
  29. listener_.Bind(std::move(listener));
  30. if (on_set_listener_callback_)
  31. std::move(on_set_listener_callback_).Run();
  32. }
  33. void FakeFrame::NotImplemented_(const std::string& name) {
  34. NOTREACHED() << name;
  35. }
  36. FakeContext::FakeContext() = default;
  37. FakeContext::~FakeContext() = default;
  38. void FakeContext::CreateFrame(
  39. fidl::InterfaceRequest<fuchsia::web::Frame> frame_request) {
  40. FakeFrame* new_frame = new FakeFrame(std::move(frame_request));
  41. if (on_create_frame_callback_)
  42. on_create_frame_callback_.Run(new_frame);
  43. // |new_frame| owns itself, so we intentionally leak the pointer.
  44. }
  45. void FakeContext::NotImplemented_(const std::string& name) {
  46. NOTREACHED() << name;
  47. }