onscreen_content_provider_android.h 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  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. #ifndef COMPONENTS_CONTENT_CAPTURE_ANDROID_ONSCREEN_CONTENT_PROVIDER_ANDROID_H_
  5. #define COMPONENTS_CONTENT_CAPTURE_ANDROID_ONSCREEN_CONTENT_PROVIDER_ANDROID_H_
  6. #include <vector>
  7. #include "base/android/scoped_java_ref.h"
  8. #include "components/content_capture/browser/content_capture_consumer.h"
  9. #include "components/content_capture/browser/onscreen_content_provider.h"
  10. namespace content_capture {
  11. // The Android's implementation of OnscreenContentProvider, it forwards
  12. // the received message to Java and switches among the OnscreenContentProvider.
  13. class OnscreenContentProviderAndroid : public ContentCaptureConsumer {
  14. public:
  15. OnscreenContentProviderAndroid(
  16. JNIEnv* env,
  17. const base::android::JavaParamRef<jobject>& jobject,
  18. content::WebContents* web_contents);
  19. ~OnscreenContentProviderAndroid() override;
  20. // ContentCaptureConsumer
  21. void DidCaptureContent(const ContentCaptureSession& parent_session,
  22. const ContentCaptureFrame& data) override;
  23. void DidUpdateContent(const ContentCaptureSession& parent_session,
  24. const ContentCaptureFrame& data) override;
  25. void DidRemoveContent(const ContentCaptureSession& session,
  26. const std::vector<int64_t>& data) override;
  27. void DidRemoveSession(const ContentCaptureSession& session) override;
  28. void DidUpdateTitle(const ContentCaptureFrame& main_frame) override;
  29. void DidUpdateFavicon(const ContentCaptureFrame& main_frame) override;
  30. bool ShouldCapture(const GURL& url) override;
  31. base::android::ScopedJavaLocalRef<jobject> GetJavaObject();
  32. void OnWebContentsChanged(
  33. JNIEnv* env,
  34. const base::android::JavaParamRef<jobject>& jweb_contents);
  35. void Destroy(JNIEnv* env);
  36. private:
  37. void AttachToWebContents(content::WebContents* web_contennts);
  38. void DetachFromWebContents();
  39. content::WebContents* GetWebContents();
  40. base::WeakPtr<OnscreenContentProvider> onscreen_content_provider_;
  41. base::android::ScopedJavaGlobalRef<jobject> java_ref_;
  42. };
  43. } // namespace content_capture
  44. #endif // COMPONENTS_CONTENT_CAPTURE_ANDROID_ONSCREEN_CONTENT_PROVIDER_ANDROID_H_