| Index: chrome/renderer/translate/translate_helper.h
|
| diff --git a/chrome/renderer/translate/translate_helper.h b/chrome/renderer/translate/translate_helper.h
|
| index 88dd518cf69ab98019089428ef253b0121894002..b66e3991fc150fd3a8874275625c1edceb3d5d42 100644
|
| --- a/chrome/renderer/translate/translate_helper.h
|
| +++ b/chrome/renderer/translate/translate_helper.h
|
| @@ -7,11 +7,21 @@
|
|
|
| #include <string>
|
|
|
| +#if defined(CLD2_DYNAMIC_MODE)
|
| +#include "base/files/memory_mapped_file.h"
|
| +#endif
|
| #include "base/gtest_prod_util.h"
|
| +#if defined(CLD2_DYNAMIC_MODE)
|
| +#include "base/lazy_instance.h"
|
| +#endif
|
| #include "base/memory/weak_ptr.h"
|
| #include "base/time/time.h"
|
| #include "components/translate/core/common/translate_errors.h"
|
| #include "content/public/renderer/render_view_observer.h"
|
| +#if defined(CLD2_DYNAMIC_MODE)
|
| +#include "ipc/ipc_platform_file.h"
|
| +#include "url/gurl.h"
|
| +#endif
|
|
|
| namespace blink {
|
| class WebDocument;
|
| @@ -29,6 +39,11 @@ class TranslateHelper : public content::RenderViewObserver {
|
| // Informs us that the page's text has been extracted.
|
| void PageCaptured(int page_id, const base::string16& contents);
|
|
|
| + // Lets the translation system know that we are preparing to navigate to
|
| + // the specified URL. If there is anything that can or should be done before
|
| + // this URL loads, this is the time to prepare for it.
|
| + void PrepareForUrl(const GURL& url);
|
| +
|
| protected:
|
| // The following methods are protected so they can be overridden in
|
| // unit-tests.
|
| @@ -148,6 +163,73 @@ class TranslateHelper : public content::RenderViewObserver {
|
| // Method factory used to make calls to TranslatePageImpl.
|
| base::WeakPtrFactory<TranslateHelper> weak_method_factory_;
|
|
|
| +#if defined(CLD2_DYNAMIC_MODE)
|
| + // Do not ask for CLD data any more.
|
| + void CancelCLD2DataFilePolling();
|
| +
|
| + // Invoked when PageCaptured is called prior to obtaining CLD data. This
|
| + // method stores the page ID into deferred_page_id_ and COPIES the contents
|
| + // of the page, then sets deferred_page_capture_ to true. When CLD data is
|
| + // eventually received (in OnCLDDataAvailable), any deferred request will be
|
| + // "resurrected" and allowed to proceed automatically, assuming that the
|
| + // page ID has not changed.
|
| + void DeferPageCaptured(const int page_id, const base::string16& contents);
|
| +
|
| + // Immediately send an IPC request to the browser process to get the CLD
|
| + // data file. In most cases, the file will already exist and we will only
|
| + // poll once; but since the file might need to be downloaded first, poll
|
| + // indefinitely until a ChromeViewMsg_CLDDataAvailable message is received
|
| + // from the browser process.
|
| + // Polling will automatically halt as soon as the renderer obtains a
|
| + // reference to the data file.
|
| + void SendCLD2DataFileRequest(const int delay_millis,
|
| + const int next_delay_millis);
|
| +
|
| + // Invoked when a ChromeViewMsg_CLDDataAvailable message is received from
|
| + // the browser process, providing a file handle for the CLD data file. If a
|
| + // PageCaptured request was previously deferred with DeferPageCaptured and
|
| + // the page ID has not yet changed, the PageCaptured is reinvoked to
|
| + // "resurrect" the language detection pathway.
|
| + void OnCLDDataAvailable(const IPC::PlatformFileForTransit ipc_file_handle,
|
| + const uint64 data_offset,
|
| + const uint64 data_length);
|
| +
|
| + // After receiving data in OnCLDDataAvailable, loads the data into CLD2.
|
| + void LoadCLDDData(const IPC::PlatformFileForTransit ipc_file_handle,
|
| + const uint64 data_offset,
|
| + const uint64 data_length);
|
| +
|
| + // A struct that contains the pointer to the CLD mmap. Used so that we can
|
| + // leverage LazyInstance:Leaky to properly scope the lifetime of the mmap.
|
| + struct CLDMmapWrapper {
|
| + CLDMmapWrapper() {
|
| + value = NULL;
|
| + }
|
| + base::MemoryMappedFile* value;
|
| + };
|
| + static base::LazyInstance<CLDMmapWrapper>::Leaky s_cld_mmap_;
|
| +
|
| + // Whether or not polling for CLD2 data has started.
|
| + bool cld2_data_file_polling_started_;
|
| +
|
| + // Whether or not CancelCLD2DataFilePolling has been called.
|
| + bool cld2_data_file_polling_canceled_;
|
| +
|
| + // Whether or not a PageCaptured event arrived prior to CLD data becoming
|
| + // available. If true, deferred_page_id_ contains the most recent page ID
|
| + // and deferred_contents_ contains the most recent contents.
|
| + bool deferred_page_capture_;
|
| +
|
| + // The ID of the page most recently reported to PageCaptured if
|
| + // deferred_page_capture_ is true.
|
| + int deferred_page_id_;
|
| +
|
| + // The contents of the page most recently reported to PageCaptured if
|
| + // deferred_page_capture_ is true.
|
| + base::string16 deferred_contents_;
|
| +
|
| +#endif
|
| +
|
| DISALLOW_COPY_AND_ASSIGN(TranslateHelper);
|
| };
|
|
|
|
|