| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #ifndef CHROME_RENDERER_CHROME_RENDER_FRAME_OBSERVER_H_ | 5 #ifndef CHROME_RENDERER_CHROME_RENDER_FRAME_OBSERVER_H_ |
| 6 #define CHROME_RENDERER_CHROME_RENDER_FRAME_OBSERVER_H_ | 6 #define CHROME_RENDERER_CHROME_RENDER_FRAME_OBSERVER_H_ |
| 7 | 7 |
| 8 #include "base/basictypes.h" | 8 #include "base/basictypes.h" |
| 9 #include "base/timer/timer.h" | 9 #include "base/timer/timer.h" |
| 10 #include "content/public/renderer/render_frame_observer.h" | 10 #include "content/public/renderer/render_frame_observer.h" |
| (...skipping 28 matching lines...) Expand all Loading... |
| 39 // Currently, this page information is just the text content of the all frames, | 39 // Currently, this page information is just the text content of the all frames, |
| 40 // collected and concatenated until a certain limit (kMaxIndexChars) is reached. | 40 // collected and concatenated until a certain limit (kMaxIndexChars) is reached. |
| 41 // TODO(dglazkov): This is incompatible with OOPIF and needs to be updated. | 41 // TODO(dglazkov): This is incompatible with OOPIF and needs to be updated. |
| 42 class PageInfo { | 42 class PageInfo { |
| 43 public: | 43 public: |
| 44 using CaptureType = PageInfoReceiver::CaptureType; | 44 using CaptureType = PageInfoReceiver::CaptureType; |
| 45 | 45 |
| 46 explicit PageInfo(PageInfoReceiver* context); | 46 explicit PageInfo(PageInfoReceiver* context); |
| 47 ~PageInfo() {} | 47 ~PageInfo() {} |
| 48 | 48 |
| 49 void CapturePageInfoLater(CaptureType capture_type, | 49 // void CapturePageInfoLater(CaptureType capture_type, |
| 50 content::RenderFrame* render_frame, | 50 // content::RenderFrame* render_frame, |
| 51 base::TimeDelta delay); | 51 // base::TimeDelta delay); |
| 52 | |
| 53 private: | |
| 54 // Checks if the current frame is an error page. | |
| 55 bool IsErrorPage(blink::WebLocalFrame* frame); | |
| 56 | 52 |
| 57 // Captures the thumbnail and text contents for indexing for the given load | 53 // Captures the thumbnail and text contents for indexing for the given load |
| 58 // ID. Kicks off analysis of the captured text. | 54 // ID. Kicks off analysis of the captured text. |
| 59 void CapturePageInfo(content::RenderFrame* render_frame, | 55 void CapturePageInfo(content::RenderFrame* render_frame, |
| 60 CaptureType capture_type); | 56 CaptureType capture_type); |
| 61 | 57 |
| 58 private: |
| 59 // Checks if the current frame is an error page. |
| 60 bool IsErrorPage(blink::WebLocalFrame* frame); |
| 61 |
| 62 |
| 62 // Retrieves the text from the given frame contents, the page text up to the | 63 // Retrieves the text from the given frame contents, the page text up to the |
| 63 // maximum amount kMaxIndexChars will be placed into the given buffer. | 64 // maximum amount kMaxIndexChars will be placed into the given buffer. |
| 64 void CaptureText(blink::WebLocalFrame* frame, base::string16* contents); | 65 void CaptureText(blink::WebLocalFrame* frame, base::string16* contents); |
| 65 | 66 |
| 66 PageInfoReceiver* context_; | 67 PageInfoReceiver* context_; |
| 67 | 68 |
| 68 // Used to delay calling CapturePageInfo. | 69 // Used to delay calling CapturePageInfo. |
| 69 base::Timer capture_timer_; | 70 base::Timer capture_timer_; |
| 70 | 71 |
| 71 DISALLOW_COPY_AND_ASSIGN(PageInfo); | 72 DISALLOW_COPY_AND_ASSIGN(PageInfo); |
| 72 }; | 73 }; |
| 73 | 74 |
| 74 // This class holds the Chrome specific parts of RenderFrame, and has the same | 75 // This class holds the Chrome specific parts of RenderFrame, and has the same |
| 75 // lifetime. | 76 // lifetime. |
| 76 class ChromeRenderFrameObserver : public content::RenderFrameObserver, | 77 class ChromeRenderFrameObserver : public content::RenderFrameObserver, |
| 77 public PageInfoReceiver { | 78 public PageInfoReceiver { |
| 78 public: | 79 public: |
| 79 explicit ChromeRenderFrameObserver(content::RenderFrame* render_frame); | 80 explicit ChromeRenderFrameObserver(content::RenderFrame* render_frame); |
| 80 ~ChromeRenderFrameObserver() override; | 81 ~ChromeRenderFrameObserver() override; |
| 81 | 82 |
| 82 private: | 83 private: |
| 83 // RenderFrameObserver implementation. | 84 // RenderFrameObserver implementation. |
| 84 bool OnMessageReceived(const IPC::Message& message) override; | 85 bool OnMessageReceived(const IPC::Message& message) override; |
| 85 void DidFinishDocumentLoad() override; | 86 void DidFinishDocumentLoad() override; |
| 86 void DidStartProvisionalLoad() override; | 87 void DidStartProvisionalLoad() override; |
| 87 void DidFinishLoad() override; | 88 void DidFinishLoad() override; |
| 88 void DidCommitProvisionalLoad(bool is_new_navigation, | 89 void DidCommitProvisionalLoad(bool is_new_navigation, |
| 89 bool is_same_page_navigation) override; | 90 bool is_same_page_navigation) override; |
| 91 void DidMeaningfulLayout(blink::WebMeaningfulLayout layout_type) override; |
| 90 | 92 |
| 91 // IPC handlers | 93 // IPC handlers |
| 92 void OnSetIsPrerendering(bool is_prerendering); | 94 void OnSetIsPrerendering(bool is_prerendering); |
| 93 void OnRequestReloadImageForContextNode(); | 95 void OnRequestReloadImageForContextNode(); |
| 94 void OnRequestThumbnailForContextNode( | 96 void OnRequestThumbnailForContextNode( |
| 95 int thumbnail_min_area_pixels, | 97 int thumbnail_min_area_pixels, |
| 96 const gfx::Size& thumbnail_max_size_pixels); | 98 const gfx::Size& thumbnail_max_size_pixels); |
| 97 void OnPrintNodeUnderContextMenu(); | 99 void OnPrintNodeUnderContextMenu(); |
| 98 void OnSetClientSidePhishingDetection(bool enable_phishing_detection); | 100 void OnSetClientSidePhishingDetection(bool enable_phishing_detection); |
| 99 void OnAppBannerPromptRequest(int request_id, | 101 void OnAppBannerPromptRequest(int request_id, |
| 100 const std::string& platform); | 102 const std::string& platform); |
| 101 void OnAppBannerDebugMessageRequest(const std::string& message); | 103 void OnAppBannerDebugMessageRequest(const std::string& message); |
| 102 | 104 |
| 103 // PageInfoReceiver implementation. | 105 // PageInfoReceiver implementation. |
| 104 void PageCaptured(base::string16* content, CaptureType capture_type) override; | 106 void PageCaptured(base::string16* content, CaptureType capture_type) override; |
| 105 | 107 |
| 106 // Have the same lifetime as us. | 108 // Have the same lifetime as us. |
| 107 translate::TranslateHelper* translate_helper_; | 109 translate::TranslateHelper* translate_helper_; |
| 108 safe_browsing::PhishingClassifierDelegate* phishing_classifier_; | 110 safe_browsing::PhishingClassifierDelegate* phishing_classifier_; |
| 109 | 111 |
| 110 PageInfo page_info_; | 112 PageInfo page_info_; |
| 111 | 113 |
| 112 DISALLOW_COPY_AND_ASSIGN(ChromeRenderFrameObserver); | 114 DISALLOW_COPY_AND_ASSIGN(ChromeRenderFrameObserver); |
| 113 }; | 115 }; |
| 114 | 116 |
| 115 #endif // CHROME_RENDERER_CHROME_RENDER_FRAME_OBSERVER_H_ | 117 #endif // CHROME_RENDERER_CHROME_RENDER_FRAME_OBSERVER_H_ |
| OLD | NEW |