OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 #include "data_file_renderer_cld_data_provider.h" | 5 #include "data_file_renderer_cld_data_provider.h" |
6 | 6 |
7 #include "base/basictypes.h" | 7 #include "base/basictypes.h" |
8 #include "base/files/file.h" | 8 #include "base/files/file.h" |
9 #include "base/files/memory_mapped_file.h" | 9 #include "base/files/memory_mapped_file.h" |
10 #include "base/lazy_instance.h" | 10 #include "base/lazy_instance.h" |
| 11 #include "base/logging.h" |
11 #include "components/translate/content/common/data_file_cld_data_provider_messag
es.h" | 12 #include "components/translate/content/common/data_file_cld_data_provider_messag
es.h" |
12 #include "content/public/renderer/render_view_observer.h" | 13 #include "content/public/renderer/render_view_observer.h" |
13 #include "ipc/ipc_message.h" | 14 #include "ipc/ipc_message.h" |
14 #include "ipc/ipc_message_macros.h" | 15 #include "ipc/ipc_message_macros.h" |
15 #include "ipc/ipc_platform_file.h" | 16 #include "ipc/ipc_platform_file.h" |
16 #include "third_party/cld_2/src/public/compact_lang_det.h" | 17 #include "third_party/cld_2/src/public/compact_lang_det.h" |
17 | 18 |
18 namespace { | 19 namespace { |
19 | 20 |
20 // A struct that contains the pointer to the CLD mmap. Used so that we can | 21 // A struct that contains the pointer to the CLD mmap. Used so that we can |
21 // leverage LazyInstance:Leaky to properly scope the lifetime of the mmap. | 22 // leverage LazyInstance:Leaky to properly scope the lifetime of the mmap. |
22 struct CLDMmapWrapper { | 23 struct CLDMmapWrapper { |
23 CLDMmapWrapper() { value = NULL; } | 24 CLDMmapWrapper() { value = NULL; } |
24 base::MemoryMappedFile* value; | 25 base::MemoryMappedFile* value; |
25 }; | 26 }; |
26 base::LazyInstance<CLDMmapWrapper>::Leaky g_cld_mmap = | 27 base::LazyInstance<CLDMmapWrapper>::Leaky g_cld_mmap = |
27 LAZY_INSTANCE_INITIALIZER; | 28 LAZY_INSTANCE_INITIALIZER; |
28 | 29 |
29 } // namespace | 30 } // namespace |
30 | 31 |
31 namespace translate { | 32 namespace translate { |
32 | 33 |
33 // Implementation of the static factory method from RendererCldDataProvider, | 34 // Implementation of the static factory method from RendererCldDataProvider, |
34 // hooking up this specific implementation for all of Chromium. | 35 // hooking up this specific implementation for all of Chromium. |
35 RendererCldDataProvider* CreateRendererCldDataProviderFor( | 36 RendererCldDataProvider* CreateRendererCldDataProviderFor( |
36 content::RenderViewObserver* render_view_observer) { | 37 content::RenderViewObserver* render_view_observer) { |
| 38 // This log line is to help with determining which kind of provider has been |
| 39 // configured. See also: chrome://translate-internals |
| 40 VLOG(1) << "Creating DataFileRendererCldDataProvider"; |
37 return new DataFileRendererCldDataProvider(render_view_observer); | 41 return new DataFileRendererCldDataProvider(render_view_observer); |
38 } | 42 } |
39 | 43 |
40 DataFileRendererCldDataProvider::DataFileRendererCldDataProvider( | 44 DataFileRendererCldDataProvider::DataFileRendererCldDataProvider( |
41 content::RenderViewObserver* render_view_observer) | 45 content::RenderViewObserver* render_view_observer) |
42 : render_view_observer_(render_view_observer) { | 46 : render_view_observer_(render_view_observer) { |
43 } | 47 } |
44 | 48 |
45 DataFileRendererCldDataProvider::~DataFileRendererCldDataProvider() { | 49 DataFileRendererCldDataProvider::~DataFileRendererCldDataProvider() { |
46 } | 50 } |
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
118 // Initialize the CLD subsystem... and it's all done! | 122 // Initialize the CLD subsystem... and it's all done! |
119 const uint8* data_ptr = g_cld_mmap.Get().value->data() + data_offset; | 123 const uint8* data_ptr = g_cld_mmap.Get().value->data() + data_offset; |
120 CLD2::loadDataFromRawAddress(data_ptr, data_length); | 124 CLD2::loadDataFromRawAddress(data_ptr, data_length); |
121 DCHECK(CLD2::isDataLoaded()) << "Failed to load CLD data from mmap"; | 125 DCHECK(CLD2::isDataLoaded()) << "Failed to load CLD data from mmap"; |
122 if (!cld_available_callback_.is_null()) { | 126 if (!cld_available_callback_.is_null()) { |
123 cld_available_callback_.Run(); | 127 cld_available_callback_.Run(); |
124 } | 128 } |
125 } | 129 } |
126 | 130 |
127 } // namespace translate | 131 } // namespace translate |
OLD | NEW |