application_host.mm 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  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 "components/remote_cocoa/browser/application_host.h"
  5. #import <Cocoa/Cocoa.h>
  6. #include "components/remote_cocoa/browser/window.h"
  7. namespace remote_cocoa {
  8. ApplicationHost::ApplicationHost(
  9. mojo::PendingAssociatedReceiver<mojom::Application>* receiver) {
  10. *receiver = application_remote_.BindNewEndpointAndPassReceiver();
  11. }
  12. ApplicationHost::~ApplicationHost() {
  13. for (Observer& obs : observers_)
  14. obs.OnApplicationHostDestroying(this);
  15. }
  16. mojom::Application* ApplicationHost::GetApplication() {
  17. return application_remote_.get();
  18. }
  19. void ApplicationHost::AddObserver(Observer* observer) {
  20. observers_.AddObserver(observer);
  21. }
  22. void ApplicationHost::RemoveObserver(const Observer* observer) {
  23. observers_.RemoveObserver(observer);
  24. }
  25. // static
  26. ApplicationHost* ApplicationHost::GetForNativeView(gfx::NativeView view) {
  27. gfx::NativeWindow window([view.GetNativeNSView() window]);
  28. return GetWindowApplicationHost(window);
  29. }
  30. } // namespace remote_cocoa