Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(68)

Side by Side Diff: chrome/browser/extensions/api/input_ime/input_ime_api_nonchromeos.cc

Issue 2666093002: Remove base::FundamentalValue (Closed)
Patch Set: Rebase Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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 // This file is for non-chromeos (win & linux) functions, such as 5 // This file is for non-chromeos (win & linux) functions, such as
6 // chrome.input.ime.activate, chrome.input.ime.createWindow and 6 // chrome.input.ime.activate, chrome.input.ime.createWindow and
7 // chrome.input.ime.onSelectionChanged. 7 // chrome.input.ime.onSelectionChanged.
8 // TODO(azurewei): May refactor the code structure by using delegate or 8 // TODO(azurewei): May refactor the code structure by using delegate or
9 // redesign the API to remove this platform-specific file in the future. 9 // redesign the API to remove this platform-specific file in the future.
10 10
(...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after
141 141
142 void InputImeAPI::OnExtensionLoaded(content::BrowserContext* browser_context, 142 void InputImeAPI::OnExtensionLoaded(content::BrowserContext* browser_context,
143 const Extension* extension) { 143 const Extension* extension) {
144 // No-op if called multiple times. 144 // No-op if called multiple times.
145 ui::IMEBridge::Initialize(); 145 ui::IMEBridge::Initialize();
146 146
147 // Set the preference kPrefNeverActivatedSinceLoaded true to indicate 147 // Set the preference kPrefNeverActivatedSinceLoaded true to indicate
148 // input.ime.activate API has been never called since loaded. 148 // input.ime.activate API has been never called since loaded.
149 Profile* profile = Profile::FromBrowserContext(browser_context); 149 Profile* profile = Profile::FromBrowserContext(browser_context);
150 ExtensionPrefs::Get(profile)->UpdateExtensionPref( 150 ExtensionPrefs::Get(profile)->UpdateExtensionPref(
151 extension->id(), kPrefNeverActivatedSinceLoaded, 151 extension->id(), kPrefNeverActivatedSinceLoaded, new base::Value(true));
152 new base::FundamentalValue(true));
153 } 152 }
154 153
155 void InputImeAPI::OnExtensionUnloaded(content::BrowserContext* browser_context, 154 void InputImeAPI::OnExtensionUnloaded(content::BrowserContext* browser_context,
156 const Extension* extension, 155 const Extension* extension,
157 UnloadedExtensionInfo::Reason reason) { 156 UnloadedExtensionInfo::Reason reason) {
158 InputImeEventRouter* event_router = 157 InputImeEventRouter* event_router =
159 GetInputImeEventRouter(Profile::FromBrowserContext(browser_context)); 158 GetInputImeEventRouter(Profile::FromBrowserContext(browser_context));
160 if (event_router) { 159 if (event_router) {
161 // Records the extension is not the last active IME engine. 160 // Records the extension is not the last active IME engine.
162 ExtensionPrefs::Get(Profile::FromBrowserContext(browser_context)) 161 ExtensionPrefs::Get(Profile::FromBrowserContext(browser_context))
163 ->UpdateExtensionPref(extension->id(), kPrefLastActiveEngine, 162 ->UpdateExtensionPref(extension->id(), kPrefLastActiveEngine,
164 new base::FundamentalValue(false)); 163 new base::Value(false));
165 event_router->DeleteInputMethodEngine(extension->id()); 164 event_router->DeleteInputMethodEngine(extension->id());
166 } 165 }
167 } 166 }
168 167
169 void InputImeAPI::OnListenerAdded(const EventListenerInfo& details) {} 168 void InputImeAPI::OnListenerAdded(const EventListenerInfo& details) {}
170 169
171 InputImeEventRouter::InputImeEventRouter(Profile* profile) 170 InputImeEventRouter::InputImeEventRouter(Profile* profile)
172 : InputImeEventRouterBase(profile), active_engine_(nullptr) {} 171 : InputImeEventRouterBase(profile), active_engine_(nullptr) {}
173 172
174 InputImeEventRouter::~InputImeEventRouter() { 173 InputImeEventRouter::~InputImeEventRouter() {
175 if (active_engine_) 174 if (active_engine_)
176 DeleteInputMethodEngine(active_engine_->GetExtensionId()); 175 DeleteInputMethodEngine(active_engine_->GetExtensionId());
177 } 176 }
178 177
179 InputMethodEngineBase* InputImeEventRouter::GetActiveEngine( 178 InputMethodEngineBase* InputImeEventRouter::GetActiveEngine(
180 const std::string& extension_id) { 179 const std::string& extension_id) {
181 return (ui::IMEBridge::Get()->GetCurrentEngineHandler() && 180 return (ui::IMEBridge::Get()->GetCurrentEngineHandler() &&
182 active_engine_ && 181 active_engine_ &&
183 active_engine_->GetExtensionId() == extension_id) 182 active_engine_->GetExtensionId() == extension_id)
184 ? active_engine_ 183 ? active_engine_
185 : nullptr; 184 : nullptr;
186 } 185 }
187 186
188 void InputImeEventRouter::SetActiveEngine(const std::string& extension_id) { 187 void InputImeEventRouter::SetActiveEngine(const std::string& extension_id) {
189 // Records the extension is the last active IME engine. 188 // Records the extension is the last active IME engine.
190 ExtensionPrefs::Get(GetProfile()) 189 ExtensionPrefs::Get(GetProfile())
191 ->UpdateExtensionPref(extension_id, kPrefLastActiveEngine, 190 ->UpdateExtensionPref(extension_id, kPrefLastActiveEngine,
192 new base::FundamentalValue(true)); 191 new base::Value(true));
193 if (active_engine_) { 192 if (active_engine_) {
194 if (active_engine_->GetExtensionId() == extension_id) { 193 if (active_engine_->GetExtensionId() == extension_id) {
195 active_engine_->Enable(std::string()); 194 active_engine_->Enable(std::string());
196 ui::IMEBridge::Get()->SetCurrentEngineHandler(active_engine_); 195 ui::IMEBridge::Get()->SetCurrentEngineHandler(active_engine_);
197 return; 196 return;
198 } 197 }
199 // Records the extension is not the last active IME engine. 198 // Records the extension is not the last active IME engine.
200 ExtensionPrefs::Get(GetProfile()) 199 ExtensionPrefs::Get(GetProfile())
201 ->UpdateExtensionPref(active_engine_->GetExtensionId(), 200 ->UpdateExtensionPref(active_engine_->GetExtensionId(),
202 kPrefLastActiveEngine, 201 kPrefLastActiveEngine, new base::Value(false));
203 new base::FundamentalValue(false));
204 DeleteInputMethodEngine(active_engine_->GetExtensionId()); 202 DeleteInputMethodEngine(active_engine_->GetExtensionId());
205 } 203 }
206 204
207 std::unique_ptr<input_method::InputMethodEngine> engine( 205 std::unique_ptr<input_method::InputMethodEngine> engine(
208 new input_method::InputMethodEngine()); 206 new input_method::InputMethodEngine());
209 std::unique_ptr<InputMethodEngineBase::Observer> observer( 207 std::unique_ptr<InputMethodEngineBase::Observer> observer(
210 new ImeObserverNonChromeOS(extension_id, GetProfile())); 208 new ImeObserverNonChromeOS(extension_id, GetProfile()));
211 engine->Initialize(std::move(observer), extension_id.c_str(), GetProfile()); 209 engine->Initialize(std::move(observer), extension_id.c_str(), GetProfile());
212 engine->Enable(std::string()); 210 engine->Enable(std::string());
213 active_engine_ = engine.release(); 211 active_engine_ = engine.release();
(...skipping 30 matching lines...) Expand all
244 &never_activated_since_loaded) && 242 &never_activated_since_loaded) &&
245 never_activated_since_loaded && 243 never_activated_since_loaded &&
246 prefs->ReadPrefAsBoolean(extension_id(), kPrefLastActiveEngine, 244 prefs->ReadPrefAsBoolean(extension_id(), kPrefLastActiveEngine,
247 &last_active_ime_engine) && 245 &last_active_ime_engine) &&
248 last_active_ime_engine) { 246 last_active_ime_engine) {
249 // If the extension is the last active IME engine, and the API is called at 247 // If the extension is the last active IME engine, and the API is called at
250 // loading the extension, we can tell the API is called from restarting 248 // loading the extension, we can tell the API is called from restarting
251 // chrome. No need for user gesture checking. 249 // chrome. No need for user gesture checking.
252 event_router->SetActiveEngine(extension_id()); 250 event_router->SetActiveEngine(extension_id());
253 ExtensionPrefs::Get(profile)->UpdateExtensionPref( 251 ExtensionPrefs::Get(profile)->UpdateExtensionPref(
254 extension_id(), kPrefNeverActivatedSinceLoaded, 252 extension_id(), kPrefNeverActivatedSinceLoaded, new base::Value(false));
255 new base::FundamentalValue(false));
256 return RespondNow(NoArguments()); 253 return RespondNow(NoArguments());
257 } 254 }
258 // The API has already been called at least once. 255 // The API has already been called at least once.
259 ExtensionPrefs::Get(profile)->UpdateExtensionPref( 256 ExtensionPrefs::Get(profile)->UpdateExtensionPref(
260 extension_id(), kPrefNeverActivatedSinceLoaded, 257 extension_id(), kPrefNeverActivatedSinceLoaded, new base::Value(false));
261 new base::FundamentalValue(false));
262 258
263 // Otherwise, this API is only allowed to be called from a user action. 259 // Otherwise, this API is only allowed to be called from a user action.
264 if (!user_gesture()) 260 if (!user_gesture())
265 return RespondNow(Error(kErrorNotCalledFromUserAction)); 261 return RespondNow(Error(kErrorNotCalledFromUserAction));
266 262
267 // Disable using the warning bubble for testing. 263 // Disable using the warning bubble for testing.
268 if (disable_bubble_for_testing_) { 264 if (disable_bubble_for_testing_) {
269 event_router->SetActiveEngine(extension_id()); 265 event_router->SetActiveEngine(extension_id());
270 return RespondNow(NoArguments()); 266 return RespondNow(NoArguments());
271 } 267 }
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
312 if (!event_router) { 308 if (!event_router) {
313 Respond(Error(kErrorNoActiveEngine)); 309 Respond(Error(kErrorNoActiveEngine));
314 return; 310 return;
315 } 311 }
316 event_router->SetActiveEngine(extension_id()); 312 event_router->SetActiveEngine(extension_id());
317 313
318 if (status == ImeWarningBubblePermissionStatus::GRANTED_AND_NEVER_SHOW) { 314 if (status == ImeWarningBubblePermissionStatus::GRANTED_AND_NEVER_SHOW) {
319 // Updates the extension preference if user checks the 'Never show this 315 // Updates the extension preference if user checks the 'Never show this
320 // again' check box. So we can activate the extension directly next time. 316 // again' check box. So we can activate the extension directly next time.
321 ExtensionPrefs::Get(profile)->UpdateExtensionPref( 317 ExtensionPrefs::Get(profile)->UpdateExtensionPref(
322 extension_id(), kPrefWarningBubbleNeverShow, 318 extension_id(), kPrefWarningBubbleNeverShow, new base::Value(true));
323 new base::FundamentalValue(true));
324 } 319 }
325 320
326 Respond(NoArguments()); 321 Respond(NoArguments());
327 } 322 }
328 323
329 ExtensionFunction::ResponseAction InputImeDeactivateFunction::Run() { 324 ExtensionFunction::ResponseAction InputImeDeactivateFunction::Run() {
330 if (!IsInputImeEnabled()) 325 if (!IsInputImeEnabled())
331 return RespondNow(Error(kErrorAPIDisabled)); 326 return RespondNow(Error(kErrorAPIDisabled));
332 327
333 InputMethodEngine* engine = 328 InputMethodEngine* engine =
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
371 extension(), render_frame_host(), 366 extension(), render_frame_host(),
372 options.url.get() ? *options.url : url::kAboutBlankURL, 367 options.url.get() ? *options.url : url::kAboutBlankURL,
373 options.window_type == input_ime::WINDOW_TYPE_FOLLOWCURSOR 368 options.window_type == input_ime::WINDOW_TYPE_FOLLOWCURSOR
374 ? ui::ImeWindow::FOLLOW_CURSOR 369 ? ui::ImeWindow::FOLLOW_CURSOR
375 : ui::ImeWindow::NORMAL, 370 : ui::ImeWindow::NORMAL,
376 bounds, &error); 371 bounds, &error);
377 if (!frame_id) 372 if (!frame_id)
378 return RespondNow(Error(error)); 373 return RespondNow(Error(error));
379 374
380 std::unique_ptr<base::DictionaryValue> result(new base::DictionaryValue()); 375 std::unique_ptr<base::DictionaryValue> result(new base::DictionaryValue());
381 result->Set("frameId", new base::FundamentalValue(frame_id)); 376 result->Set("frameId", new base::Value(frame_id));
382 377
383 return RespondNow(OneArgument(std::move(result))); 378 return RespondNow(OneArgument(std::move(result)));
384 } 379 }
385 380
386 ExtensionFunction::ResponseAction InputImeShowWindowFunction::Run() { 381 ExtensionFunction::ResponseAction InputImeShowWindowFunction::Run() {
387 if (!IsInputImeEnabled()) 382 if (!IsInputImeEnabled())
388 return RespondNow(Error(kErrorAPIDisabled)); 383 return RespondNow(Error(kErrorAPIDisabled));
389 384
390 InputMethodEngine* engine = 385 InputMethodEngine* engine =
391 GetActiveEngine(browser_context(), extension_id()); 386 GetActiveEngine(browser_context(), extension_id());
(...skipping 17 matching lines...) Expand all
409 return RespondNow(Error(kErrorNoActiveEngine)); 404 return RespondNow(Error(kErrorNoActiveEngine));
410 405
411 std::unique_ptr<api::input_ime::HideWindow::Params> params( 406 std::unique_ptr<api::input_ime::HideWindow::Params> params(
412 api::input_ime::HideWindow::Params::Create(*args_)); 407 api::input_ime::HideWindow::Params::Create(*args_));
413 EXTENSION_FUNCTION_VALIDATE(params.get()); 408 EXTENSION_FUNCTION_VALIDATE(params.get());
414 engine->HideImeWindow(params->window_id); 409 engine->HideImeWindow(params->window_id);
415 return RespondNow(NoArguments()); 410 return RespondNow(NoArguments());
416 } 411 }
417 412
418 } // namespace extensions 413 } // namespace extensions
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698