aw_render_process.h 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  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. #ifndef ANDROID_WEBVIEW_BROWSER_AW_RENDER_PROCESS_H_
  5. #define ANDROID_WEBVIEW_BROWSER_AW_RENDER_PROCESS_H_
  6. #include "android_webview/common/mojom/renderer.mojom.h"
  7. #include "base/android/scoped_java_ref.h"
  8. #include "base/memory/raw_ptr.h"
  9. #include "base/memory/weak_ptr.h"
  10. #include "base/supports_user_data.h"
  11. #include "content/public/browser/render_process_host_observer.h"
  12. #include "mojo/public/cpp/bindings/associated_remote.h"
  13. namespace android_webview {
  14. class AwRenderProcess : public content::RenderProcessHostObserver,
  15. public base::SupportsUserData::Data {
  16. public:
  17. static AwRenderProcess* GetInstanceForRenderProcessHost(
  18. content::RenderProcessHost* host);
  19. base::android::ScopedJavaLocalRef<jobject> GetJavaObject();
  20. bool TerminateChildProcess(JNIEnv* env,
  21. const base::android::JavaParamRef<jobject>& obj);
  22. bool IsProcessLockedToSiteForTesting(
  23. JNIEnv* env,
  24. const base::android::JavaParamRef<jobject>& obj);
  25. explicit AwRenderProcess(content::RenderProcessHost* render_process_host);
  26. AwRenderProcess(const AwRenderProcess&) = delete;
  27. AwRenderProcess& operator=(const AwRenderProcess&) = delete;
  28. ~AwRenderProcess() override;
  29. void ClearCache();
  30. void SetJsOnlineProperty(bool network_up);
  31. private:
  32. void Ready();
  33. void Cleanup();
  34. // content::RenderProcessHostObserver implementation
  35. void RenderProcessReady(content::RenderProcessHost* host) override;
  36. void RenderProcessExited(
  37. content::RenderProcessHost* host,
  38. const content::ChildProcessTerminationInfo& info) override;
  39. base::android::ScopedJavaGlobalRef<jobject> java_obj_;
  40. raw_ptr<content::RenderProcessHost> render_process_host_;
  41. mojo::AssociatedRemote<mojom::Renderer> renderer_remote_;
  42. base::WeakPtrFactory<AwRenderProcess> weak_factory_{this};
  43. };
  44. } // namespace android_webview
  45. #endif // ANDROID_WEBVIEW_BROWSER_AW_RENDER_PROCESS_H_