Remove MOZC_USE_SEPARATE_DATASET macro
This macro is no longer necessary because:
- On Android and ChromeOS, model data is always loaded form a file.
DataManager is used for this purpose.
- On desktop (Win, Mac, Linux), model data is embedded in executables
through OssDataManager.
- In unit tests, MockDataManager or appropriate embedded data manager
is used, so scoped_data_manager_initializer_for_testing is no longer
necessary.
BUG=
TEST=
REF_BUG=26841123
REF_CL=120318647
REF_TIME=2016-04-20T18:53:48+09:00
REF_TIME_RAW=1461146028 +0900
Noriyuki Takahashi
8 years ago
224 | 224 | { |
225 | 225 | 'target_name': 'assets_mozc_dataset', |
226 | 226 | 'type': 'none', |
227 | 'conditions': [ | |
228 | ['use_separate_dataset==1', | |
229 | { | |
230 | 'actions': [ | |
231 | { | |
232 | 'action_name': 'assets_copy_dataset', | |
233 | 'inputs': [ | |
234 | '<(mozc_dataset)', | |
235 | ], | |
236 | 'outputs': [ | |
237 | '<(sdk_asset_dir)/mozc.imy', | |
238 | ], | |
239 | 'action': [ | |
240 | # Note that multiple output files cannot be handled | |
241 | # by copy_file script. | |
242 | '<@(copy_file)', '<@(_inputs)', '<@(_outputs)', | |
243 | ], | |
244 | }, | |
245 | ], | |
246 | }, | |
247 | ], | |
248 | ], | |
227 | 'actions': [{ | |
228 | 'action_name': 'assets_copy_dataset', | |
229 | 'inputs': [ | |
230 | '<(mozc_dataset)', | |
231 | ], | |
232 | 'outputs': [ | |
233 | '<(sdk_asset_dir)/mozc.imy', | |
234 | ], | |
235 | 'action': [ | |
236 | # Note that multiple output files cannot be handled | |
237 | # by copy_file script. | |
238 | '<@(copy_file)', '<@(_inputs)', '<@(_outputs)', | |
239 | ], | |
240 | }], | |
249 | 241 | }, |
250 | 242 | { |
251 | 243 | # CAVEAT: |
730 | 730 | # Dictionary configuration |
731 | 731 | if target_platform == 'Android': |
732 | 732 | gyp_options.extend(['-D', 'dictionary=small']) |
733 | gyp_options.extend(['-D', 'use_separate_dataset=1']) | |
734 | 733 | gyp_options.extend(['-D', 'use_1byte_cost_for_connection_data=1']) |
735 | 734 | elif target_platform == 'NaCl': |
736 | 735 | gyp_options.extend(['-D', 'dictionary=desktop']) |
737 | gyp_options.extend(['-D', 'use_separate_dataset=0']) | |
738 | 736 | gyp_options.extend(['-D', 'use_1byte_cost_for_connection_data=0']) |
739 | 737 | else: |
740 | 738 | gyp_options.extend(['-D', 'dictionary=desktop']) |
741 | gyp_options.extend(['-D', 'use_separate_dataset=0']) | |
742 | 739 | gyp_options.extend(['-D', 'use_1byte_cost_for_connection_data=0']) |
743 | 740 | |
744 | 741 | if target_platform == 'NaCl': |
48 | 48 | 'dependencies': [ |
49 | 49 | '../composer/composer.gyp:composer', |
50 | 50 | '../config/config.gyp:config_handler', |
51 | '../data_manager/data_manager_test.gyp:scoped_data_manager_initializer_for_testing', | |
52 | 51 | '../data_manager/testing/mock_data_manager.gyp:mock_data_manager', |
53 | 52 | '../dictionary/dictionary.gyp:dictionary_mock', |
54 | 53 | '../dictionary/dictionary.gyp:suffix_dictionary', |
0 | 0 | MAJOR=2 |
1 | 1 | MINOR=18 |
2 | BUILD=2552 | |
2 | BUILD=2553 | |
3 | 3 | REVISION=102 |
4 | 4 | # CAUTION: NACL_DICTIONARY_VERSION is going to be migrated to ENGINE_VERSION. |
5 | 5 | # NACL_DICTIONARY_VERSION is the target version of the system dictionary to be |
49 | 49 | ], |
50 | 50 | }, |
51 | 51 | { |
52 | 'target_name': 'scoped_data_manager_initializer_for_testing', | |
53 | 'type': 'static_library', | |
54 | 'toolsets': [ 'target' ], | |
55 | 'sources': [ | |
56 | 'scoped_data_manager_initializer_for_testing.cc', | |
57 | ], | |
58 | 'conditions': [ | |
59 | ['target_platform=="Android"', { | |
60 | 'dependencies': [ | |
61 | ':scoped_android_data_manager_initializer_for_testing' | |
62 | ], | |
63 | }], | |
64 | ], | |
65 | }, | |
66 | { | |
67 | 52 | 'target_name': 'dataset_writer_test', |
68 | 53 | 'type': 'executable', |
69 | 54 | 'toolsets': [ 'target' ], |
106 | 91 | ], |
107 | 92 | }, |
108 | 93 | ], |
109 | 'conditions': [ | |
110 | ['target_platform=="Android"', { | |
111 | 'targets': [ | |
112 | { | |
113 | 'target_name': 'scoped_android_data_manager_initializer_for_testing', | |
114 | 'type': 'static_library', | |
115 | 'toolsets': [ 'target' ], | |
116 | 'sources': [ | |
117 | 'android/scoped_android_data_manager_initializer_for_testing.cc', | |
118 | ], | |
119 | }, | |
120 | ], | |
121 | }], | |
122 | ], | |
123 | 94 | } |
35 | 35 | namespace oss { |
36 | 36 | namespace { |
37 | 37 | |
38 | const char *g_mozc_data_address = nullptr; | |
39 | size_t g_mozc_data_size = 0; | |
40 | ||
41 | #ifdef MOZC_USE_SEPARATE_DATASET | |
42 | const EmbeddedFile kOssMozcDataSet = {nullptr, 0}; | |
43 | #else | |
44 | 38 | // kOssMozcDataSet is embedded. |
45 | 39 | #include "data_manager/oss/mozc_imy.h" |
46 | #endif // MOZC_USE_SEPARATE_DATASET | |
47 | 40 | |
48 | 41 | #ifndef MOZC_DATASET_MAGIC_NUMBER |
49 | 42 | #error "MOZC_DATASET_MAGIC_NUMBER is not defined by build system" |
55 | 48 | |
56 | 49 | OssDataManager::OssDataManager() { |
57 | 50 | const StringPiece magic(kMagicNumber, arraysize(kMagicNumber) - 1); |
58 | if (g_mozc_data_address != nullptr) { | |
59 | const StringPiece data(g_mozc_data_address, g_mozc_data_size); | |
60 | CHECK_EQ(Status::OK, InitFromArray(data, magic)) | |
61 | << "Image set by SetMozcDataSet() is broken"; | |
62 | return; | |
63 | } | |
64 | #ifdef MOZC_USE_SEPARATE_DATASET | |
65 | LOG(FATAL) | |
66 | << "When MOZC_USE_SEPARATE_DATASET build flag is defined, " | |
67 | << "OssDataManager::SetMozcDataSet() must be called before " | |
68 | << "instantiation of OssDataManager instances."; | |
69 | #endif // MOZC_USE_SEPARATE_DATASET | |
70 | 51 | CHECK_EQ(Status::OK, InitFromArray(LoadEmbeddedFile(kOssMozcDataSet), magic)) |
71 | 52 | << "Embedded mozc_imy.h for OSS is broken"; |
72 | 53 | } |
73 | 54 | |
74 | 55 | OssDataManager::~OssDataManager() = default; |
75 | 56 | |
76 | // Both pointers can be nullptr when the DataManager is reset on testing. | |
77 | void OssDataManager::SetMozcDataSet(void *address, size_t size) { | |
78 | g_mozc_data_address = reinterpret_cast<char *>(address); | |
79 | g_mozc_data_size = size; | |
80 | } | |
81 | ||
82 | 57 | } // namespace oss |
83 | 58 | } // namespace mozc |
35 | 35 | namespace mozc { |
36 | 36 | namespace oss { |
37 | 37 | |
38 | // This is a simple wrapper of DataManager that uses the embedded OSS data set. | |
39 | // Note that linking against this module embeds OSS data set into executable. | |
38 | 40 | class OssDataManager : public DataManager { |
39 | 41 | public: |
40 | 42 | OssDataManager(); |
41 | 43 | ~OssDataManager() override; |
42 | ||
43 | static void SetMozcDataSet(void *address, size_t size); | |
44 | 44 | |
45 | 45 | private: |
46 | 46 | DISALLOW_COPY_AND_ASSIGN(OssDataManager); |
0 | // Copyright 2010-2016, Google Inc. | |
1 | // All rights reserved. | |
2 | // | |
3 | // Redistribution and use in source and binary forms, with or without | |
4 | // modification, are permitted provided that the following conditions are | |
5 | // met: | |
6 | // | |
7 | // * Redistributions of source code must retain the above copyright | |
8 | // notice, this list of conditions and the following disclaimer. | |
9 | // * Redistributions in binary form must reproduce the above | |
10 | // copyright notice, this list of conditions and the following disclaimer | |
11 | // in the documentation and/or other materials provided with the | |
12 | // distribution. | |
13 | // * Neither the name of Google Inc. nor the names of its | |
14 | // contributors may be used to endorse or promote products derived from | |
15 | // this software without specific prior written permission. | |
16 | // | |
17 | // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS | |
18 | // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT | |
19 | // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR | |
20 | // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT | |
21 | // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | |
22 | // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT | |
23 | // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | |
24 | // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | |
25 | // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | |
26 | // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | |
27 | // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | |
28 | ||
29 | #include "data_manager/scoped_data_manager_initializer_for_testing.h" | |
30 | ||
31 | namespace mozc { | |
32 | ||
33 | scoped_data_manager_initializer_for_testing:: | |
34 | scoped_data_manager_initializer_for_testing() {} | |
35 | ||
36 | scoped_data_manager_initializer_for_testing:: | |
37 | ~scoped_data_manager_initializer_for_testing() {} | |
38 | ||
39 | } // namespace mozc |
0 | // Copyright 2010-2016, Google Inc. | |
1 | // All rights reserved. | |
2 | // | |
3 | // Redistribution and use in source and binary forms, with or without | |
4 | // modification, are permitted provided that the following conditions are | |
5 | // met: | |
6 | // | |
7 | // * Redistributions of source code must retain the above copyright | |
8 | // notice, this list of conditions and the following disclaimer. | |
9 | // * Redistributions in binary form must reproduce the above | |
10 | // copyright notice, this list of conditions and the following disclaimer | |
11 | // in the documentation and/or other materials provided with the | |
12 | // distribution. | |
13 | // * Neither the name of Google Inc. nor the names of its | |
14 | // contributors may be used to endorse or promote products derived from | |
15 | // this software without specific prior written permission. | |
16 | // | |
17 | // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS | |
18 | // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT | |
19 | // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR | |
20 | // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT | |
21 | // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | |
22 | // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT | |
23 | // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | |
24 | // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | |
25 | // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | |
26 | // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | |
27 | // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | |
28 | ||
29 | #ifndef MOZC_DATA_MANAGER_SCOPED_DATA_MANAGER_INITIALIZER_FOR_TESTING_H_ | |
30 | #define MOZC_DATA_MANAGER_SCOPED_DATA_MANAGER_INITIALIZER_FOR_TESTING_H_ | |
31 | ||
32 | #include "base/port.h" | |
33 | ||
34 | #ifdef OS_ANDROID | |
35 | #include "data_manager/android/scoped_android_data_manager_initializer_for_testing.h" | |
36 | #endif // OS_ANDROID | |
37 | ||
38 | namespace mozc { | |
39 | ||
40 | class scoped_data_manager_initializer_for_testing { | |
41 | public: | |
42 | scoped_data_manager_initializer_for_testing(); | |
43 | ~scoped_data_manager_initializer_for_testing(); | |
44 | ||
45 | private: | |
46 | #ifdef OS_ANDROID | |
47 | mozc::android::scoped_android_data_manager_initializer_for_testing | |
48 | scoped_android_data_manager_initializer_for_testing_; | |
49 | #endif // OS_ANDROID | |
50 | ||
51 | DISALLOW_COPY_AND_ASSIGN(scoped_data_manager_initializer_for_testing); | |
52 | }; | |
53 | ||
54 | } // namespace mozc | |
55 | ||
56 | #endif // MOZC_DATA_MANAGER_SCOPED_DATA_MANAGER_INITIALIZER_FOR_TESTING_H_ |
37 | 37 | |
38 | 38 | # a flag whether the current build is dev-channel or not. |
39 | 39 | 'channel_dev%': '0', |
40 | ||
41 | # a flag whether the dataset is embedded or separated (for Android). | |
42 | 'use_separate_dataset%': '0', | |
43 | 40 | |
44 | 41 | # enable_cloud_handwriting represents if cloud handwriting feature is |
45 | 42 | # enabled or not. |
89 | 86 | ['channel_dev==1', { |
90 | 87 | 'defines': ['CHANNEL_DEV'], |
91 | 88 | }], |
92 | ['use_separate_dataset==1', { | |
93 | 'defines': ['MOZC_USE_SEPARATE_DATASET'], | |
94 | }], | |
95 | 89 | ['enable_cloud_handwriting==1', { |
96 | 90 | 'defines': ['ENABLE_CLOUD_HANDWRITING'], |
97 | 91 | }], |
48 | 48 | '../converter/converter_base.gyp:immutable_converter', |
49 | 49 | '../converter/converter_base.gyp:segmenter', |
50 | 50 | '../converter/converter_base.gyp:segments', |
51 | '../data_manager/data_manager_test.gyp:scoped_data_manager_initializer_for_testing', | |
52 | 51 | '../data_manager/testing/mock_data_manager.gyp:mock_data_manager', |
53 | 52 | '../dictionary/dictionary.gyp:dictionary', |
54 | 53 | '../dictionary/dictionary.gyp:dictionary_mock', |
38 | 38 | #include "composer/composer.h" |
39 | 39 | #include "config/config_handler.h" |
40 | 40 | #include "converter/segments.h" |
41 | #include "data_manager/scoped_data_manager_initializer_for_testing.h" | |
42 | 41 | #include "data_manager/testing/mock_data_manager.h" |
43 | 42 | #include "dictionary/dictionary_mock.h" |
44 | 43 | #include "dictionary/pos_matcher.h" |
66 | 65 | |
67 | 66 | class CheckCandSizePredictor : public PredictorInterface { |
68 | 67 | public: |
69 | explicit CheckCandSizePredictor(int expected_cand_size) : | |
70 | expected_cand_size_(expected_cand_size), | |
71 | predictor_name_("CheckCandSizePredictor") { | |
72 | } | |
73 | virtual bool PredictForRequest(const ConversionRequest &request, | |
74 | Segments *segments) const { | |
68 | explicit CheckCandSizePredictor(int expected_cand_size) | |
69 | : expected_cand_size_(expected_cand_size), | |
70 | predictor_name_("CheckCandSizePredictor") {} | |
71 | ||
72 | bool PredictForRequest(const ConversionRequest &request, | |
73 | Segments *segments) const override { | |
75 | 74 | EXPECT_EQ(expected_cand_size_, segments->max_prediction_candidates_size()); |
76 | 75 | return true; |
77 | 76 | } |
78 | virtual const string &GetPredictorName() const { | |
77 | ||
78 | const string &GetPredictorName() const override { | |
79 | 79 | return predictor_name_; |
80 | 80 | } |
81 | 81 | |
82 | 82 | private: |
83 | int expected_cand_size_; | |
83 | const int expected_cand_size_; | |
84 | 84 | const string predictor_name_; |
85 | scoped_data_manager_initializer_for_testing | |
86 | scoped_data_manager_initializer_for_testing_; | |
87 | 85 | }; |
88 | 86 | |
89 | 87 | class NullPredictor : public PredictorInterface { |
91 | 89 | explicit NullPredictor(bool ret) |
92 | 90 | : return_value_(ret), predict_called_(false), |
93 | 91 | predictor_name_("NullPredictor") {} |
94 | virtual bool PredictForRequest(const ConversionRequest &request, | |
95 | Segments *segments) const { | |
92 | ||
93 | bool PredictForRequest(const ConversionRequest &request, | |
94 | Segments *segments) const override { | |
96 | 95 | predict_called_ = true; |
97 | 96 | return return_value_; |
98 | 97 | } |
101 | 100 | return predict_called_; |
102 | 101 | } |
103 | 102 | |
104 | virtual void Clear() { | |
103 | void Clear() { | |
105 | 104 | predict_called_ = false; |
106 | 105 | } |
107 | 106 | |
108 | virtual const string &GetPredictorName() const { | |
107 | const string &GetPredictorName() const override { | |
109 | 108 | return predictor_name_; |
110 | 109 | } |
111 | 110 | |
117 | 116 | |
118 | 117 | class MockPredictor : public PredictorInterface { |
119 | 118 | public: |
120 | MockPredictor() {} | |
121 | virtual ~MockPredictor() {} | |
119 | MockPredictor() = default; | |
120 | ~MockPredictor() override = default; | |
122 | 121 | MOCK_CONST_METHOD2( |
123 | 122 | PredictForRequest, |
124 | 123 | bool(const ConversionRequest &request, Segments *segments)); |
129 | 128 | |
130 | 129 | class MobilePredictorTest : public ::testing::Test { |
131 | 130 | protected: |
132 | virtual void SetUp() { | |
131 | void SetUp() override { | |
133 | 132 | config_.reset(new config::Config); |
134 | 133 | config::ConfigHandler::GetDefaultConfig(config_.get()); |
135 | 134 |
35 | 35 | |
36 | 36 | #include "base/file_util.h" |
37 | 37 | #include "base/port.h" |
38 | #include "data_manager/scoped_data_manager_initializer_for_testing.h" | |
39 | 38 | #include "engine/engine_factory.h" |
40 | 39 | #include "protocol/commands.pb.h" |
41 | 40 | #include "session/random_keyevents_generator.h" |
63 | 62 | using session::testing::SessionHandlerTestBase; |
64 | 63 | using session::testing::TestSessionClient; |
65 | 64 | |
66 | class SessionHandlerStressTest : public SessionHandlerTestBase { | |
67 | protected: | |
68 | virtual EngineInterface *CreateEngine() { | |
69 | return EngineFactory::Create(); | |
70 | } | |
71 | ||
72 | private: | |
73 | scoped_data_manager_initializer_for_testing | |
74 | scoped_data_manager_initializer_for_testing_; | |
75 | }; | |
76 | ||
77 | TEST_F(SessionHandlerStressTest, BasicStressTest) { | |
65 | TEST(SessionHandlerStressTest, BasicStressTest) { | |
78 | 66 | vector<commands::KeyEvent> keys; |
79 | 67 | commands::Output output; |
80 | 68 | std::unique_ptr<EngineInterface> engine(EngineFactory::Create()); |
35 | 35 | #include <string> |
36 | 36 | |
37 | 37 | #include "base/port.h" |
38 | #include "data_manager/scoped_data_manager_initializer_for_testing.h" | |
39 | 38 | #include "protocol/commands.pb.h" |
40 | 39 | #include "protocol/config.pb.h" |
41 | 40 | #include "testing/base/public/gunit.h" |
93 | 92 | int32 flags_last_command_timeout_backup_; |
94 | 93 | int32 flags_last_create_session_timeout_backup_; |
95 | 94 | bool flags_restricted_backup_; |
96 | ||
97 | scoped_data_manager_initializer_for_testing | |
98 | scoped_data_manager_initializer_for_testing_; | |
99 | 95 | usage_stats::scoped_usage_stats_enabler usage_stats_enabler_; |
100 | 96 | |
101 | 97 | DISALLOW_COPY_AND_ASSIGN(SessionHandlerTestBase); |
40 | 40 | #include "composer/table.h" |
41 | 41 | #include "config/config_handler.h" |
42 | 42 | #include "converter/segments.h" |
43 | #include "data_manager/scoped_data_manager_initializer_for_testing.h" | |
44 | 43 | #include "engine/engine_factory.h" |
45 | 44 | #include "protocol/candidates.pb.h" |
46 | 45 | #include "protocol/commands.pb.h" |
55 | 54 | #include "testing/base/public/googletest.h" |
56 | 55 | #include "testing/base/public/gunit.h" |
57 | 56 | |
58 | DECLARE_string(test_srcdir); | |
59 | DECLARE_string(test_tmpdir); | |
60 | 57 | DECLARE_bool(use_history_rewriter); |
61 | 58 | |
62 | 59 | namespace mozc { |
85 | 82 | |
86 | 83 | } // namespace |
87 | 84 | |
88 | class SessionRegressionTest : public testing::Test { | |
85 | class SessionRegressionTest : public ::testing::Test { | |
89 | 86 | protected: |
90 | virtual void SetUp() { | |
87 | void SetUp() override { | |
91 | 88 | SystemUtil::SetUserProfileDirectory(FLAGS_test_tmpdir); |
92 | 89 | |
93 | 90 | orig_use_history_rewriter_ = FLAGS_use_history_rewriter; |
102 | 99 | CHECK(session_.get()); |
103 | 100 | } |
104 | 101 | |
105 | virtual void TearDown() { | |
102 | void TearDown() override { | |
106 | 103 | // just in case, reset the config in test_tmpdir |
107 | 104 | config::Config config; |
108 | 105 | config::ConfigHandler::GetDefaultConfig(&config); |
159 | 156 | std::unique_ptr<session::Session> session_; |
160 | 157 | std::unique_ptr<composer::Table> table_; |
161 | 158 | config::Config config_; |
162 | scoped_data_manager_initializer_for_testing | |
163 | scoped_data_manager_initializer_for_testing_; | |
164 | 159 | }; |
165 | 160 | |
166 | 161 |
41 | 41 | 'dependencies': [ |
42 | 42 | '../base/base.gyp:base', |
43 | 43 | '../config/config.gyp:config_handler', |
44 | '../data_manager/data_manager_test.gyp:scoped_data_manager_initializer_for_testing', | |
45 | 44 | '../engine/engine.gyp:engine_factory', |
46 | 45 | '../engine/engine.gyp:mock_data_engine_factory', |
47 | 46 | '../protocol/protocol.gyp:commands_proto', |
97 | 96 | 'session_regression_test.cc', |
98 | 97 | ], |
99 | 98 | 'dependencies': [ |
100 | '../data_manager/data_manager_test.gyp:scoped_data_manager_initializer_for_testing', | |
101 | 99 | '../engine/engine.gyp:engine_factory', |
102 | 100 | '../testing/testing.gyp:gtest_main', |
103 | 101 | 'session.gyp:session', |
247 | 245 | 'session_handler_stress_test.cc' |
248 | 246 | ], |
249 | 247 | 'dependencies': [ |
250 | '../data_manager/data_manager_test.gyp:scoped_data_manager_initializer_for_testing', | |
251 | 248 | '../engine/engine.gyp:engine_factory', |
252 | 249 | '../testing/testing.gyp:gtest_main', |
253 | 250 | 'session.gyp:random_keyevents_generator', |