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

Side by Side Diff: chrome/common/pref_service.cc

Issue 31014: Port DictionaryValue to use string16 instead of wstring. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 11 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 | Annotate | Revision Log
« no previous file with comments | « chrome/common/json_value_serializer_unittest.cc ('k') | chrome/renderer/localized_error.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2006-2008 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 "chrome/common/pref_service.h" 5 #include "chrome/common/pref_service.h"
6 6
7 #include "base/compiler_specific.h" 7 #include "base/compiler_specific.h"
8 #include "base/file_util.h" 8 #include "base/file_util.h"
9 #include "base/logging.h" 9 #include "base/logging.h"
10 #include "base/message_loop.h" 10 #include "base/message_loop.h"
(...skipping 271 matching lines...) Expand 10 before | Expand all | Expand 10 after
282 bool PrefService::IsPrefRegistered(const wchar_t* path) { 282 bool PrefService::IsPrefRegistered(const wchar_t* path) {
283 DCHECK(CalledOnValidThread()); 283 DCHECK(CalledOnValidThread());
284 // TODO(tc): We can remove this method and just use FindPreference. 284 // TODO(tc): We can remove this method and just use FindPreference.
285 return FindPreference(path) ? true : false; 285 return FindPreference(path) ? true : false;
286 } 286 }
287 287
288 bool PrefService::GetBoolean(const wchar_t* path) const { 288 bool PrefService::GetBoolean(const wchar_t* path) const {
289 DCHECK(CalledOnValidThread()); 289 DCHECK(CalledOnValidThread());
290 290
291 bool result = false; 291 bool result = false;
292 if (transient_->GetBoolean(path, &result)) 292 if (transient_->GetBoolean(WideToUTF16Hack(path), &result))
293 return result; 293 return result;
294 294
295 const Preference* pref = FindPreference(path); 295 const Preference* pref = FindPreference(path);
296 if (!pref) { 296 if (!pref) {
297 DCHECK(false) << "Trying to read an unregistered pref: " << path; 297 DCHECK(false) << "Trying to read an unregistered pref: " << path;
298 return result; 298 return result;
299 } 299 }
300 bool rv = pref->GetValue()->GetAsBoolean(&result); 300 bool rv = pref->GetValue()->GetAsBoolean(&result);
301 DCHECK(rv); 301 DCHECK(rv);
302 return result; 302 return result;
303 } 303 }
304 304
305 int PrefService::GetInteger(const wchar_t* path) const { 305 int PrefService::GetInteger(const wchar_t* path) const {
306 DCHECK(CalledOnValidThread()); 306 DCHECK(CalledOnValidThread());
307 307
308 int result = 0; 308 int result = 0;
309 if (transient_->GetInteger(path, &result)) 309 if (transient_->GetInteger(WideToUTF16Hack(path), &result))
310 return result; 310 return result;
311 311
312 const Preference* pref = FindPreference(path); 312 const Preference* pref = FindPreference(path);
313 if (!pref) { 313 if (!pref) {
314 DCHECK(false) << "Trying to read an unregistered pref: " << path; 314 DCHECK(false) << "Trying to read an unregistered pref: " << path;
315 return result; 315 return result;
316 } 316 }
317 bool rv = pref->GetValue()->GetAsInteger(&result); 317 bool rv = pref->GetValue()->GetAsInteger(&result);
318 DCHECK(rv); 318 DCHECK(rv);
319 return result; 319 return result;
320 } 320 }
321 321
322 double PrefService::GetReal(const wchar_t* path) const { 322 double PrefService::GetReal(const wchar_t* path) const {
323 DCHECK(CalledOnValidThread()); 323 DCHECK(CalledOnValidThread());
324 324
325 double result = 0.0; 325 double result = 0.0;
326 if (transient_->GetReal(path, &result)) 326 if (transient_->GetReal(WideToUTF16Hack(path), &result))
327 return result; 327 return result;
328 328
329 const Preference* pref = FindPreference(path); 329 const Preference* pref = FindPreference(path);
330 if (!pref) { 330 if (!pref) {
331 DCHECK(false) << "Trying to read an unregistered pref: " << path; 331 DCHECK(false) << "Trying to read an unregistered pref: " << path;
332 return result; 332 return result;
333 } 333 }
334 bool rv = pref->GetValue()->GetAsReal(&result); 334 bool rv = pref->GetValue()->GetAsReal(&result);
335 DCHECK(rv); 335 DCHECK(rv);
336 return result; 336 return result;
337 } 337 }
338 338
339 std::wstring PrefService::GetString(const wchar_t* path) const { 339 std::wstring PrefService::GetString(const wchar_t* path) const {
340 DCHECK(CalledOnValidThread()); 340 DCHECK(CalledOnValidThread());
341 341
342 string16 result16;
343 if (transient_->GetString(WideToUTF16Hack(path), &result16))
344 return UTF16ToWideHack(result16);
345
342 std::wstring result; 346 std::wstring result;
343 if (transient_->GetString(path, &result))
344 return result;
345
346 const Preference* pref = FindPreference(path); 347 const Preference* pref = FindPreference(path);
347 if (!pref) { 348 if (!pref) {
348 #if defined(OS_WIN) 349 #if defined(OS_WIN)
349 DCHECK(false) << "Trying to read an unregistered pref: " << path; 350 DCHECK(false) << "Trying to read an unregistered pref: " << path;
350 #else 351 #else
351 // TODO(port): remove this exception 352 // TODO(port): remove this exception
352 #endif 353 #endif
353 return result; 354 return result;
354 } 355 }
355 bool rv = pref->GetValue()->GetAsString(&result); 356 bool rv = pref->GetValue()->GetAsString(&result);
356 DCHECK(rv); 357 DCHECK(rv);
357 return result; 358 return result;
358 } 359 }
359 360
360 bool PrefService::HasPrefPath(const wchar_t* path) const { 361 bool PrefService::HasPrefPath(const wchar_t* path) const {
361 Value* value = NULL; 362 Value* value = NULL;
362 return (transient_->Get(path, &value) || persistent_->Get(path, &value)); 363 string16 path16 = WideToUTF16Hack(path);
364 return (transient_->Get(path16, &value) || persistent_->Get(path16, &value));
363 } 365 }
364 366
365 const PrefService::Preference* PrefService::FindPreference( 367 const PrefService::Preference* PrefService::FindPreference(
366 const wchar_t* pref_name) const { 368 const wchar_t* pref_name) const {
367 DCHECK(CalledOnValidThread()); 369 DCHECK(CalledOnValidThread());
368 Preference p(NULL, pref_name, NULL); 370 Preference p(NULL, pref_name, NULL);
369 PreferenceSet::const_iterator it = prefs_.find(&p); 371 PreferenceSet::const_iterator it = prefs_.find(&p);
370 return it == prefs_.end() ? NULL : *it; 372 return it == prefs_.end() ? NULL : *it;
371 } 373 }
372 374
373 const DictionaryValue* PrefService::GetDictionary(const wchar_t* path) const { 375 const DictionaryValue* PrefService::GetDictionary(const wchar_t* path) const {
374 DCHECK(CalledOnValidThread()); 376 DCHECK(CalledOnValidThread());
375 377
376 DictionaryValue* result = NULL; 378 DictionaryValue* result = NULL;
377 if (transient_->GetDictionary(path, &result)) 379 if (transient_->GetDictionary(WideToUTF16Hack(path), &result))
378 return result; 380 return result;
379 381
380 const Preference* pref = FindPreference(path); 382 const Preference* pref = FindPreference(path);
381 if (!pref) { 383 if (!pref) {
382 DCHECK(false) << "Trying to read an unregistered pref: " << path; 384 DCHECK(false) << "Trying to read an unregistered pref: " << path;
383 return NULL; 385 return NULL;
384 } 386 }
385 const Value* value = pref->GetValue(); 387 const Value* value = pref->GetValue();
386 if (value->GetType() == Value::TYPE_NULL) 388 if (value->GetType() == Value::TYPE_NULL)
387 return NULL; 389 return NULL;
388 return static_cast<const DictionaryValue*>(value); 390 return static_cast<const DictionaryValue*>(value);
389 } 391 }
390 392
391 const ListValue* PrefService::GetList(const wchar_t* path) const { 393 const ListValue* PrefService::GetList(const wchar_t* path) const {
392 DCHECK(CalledOnValidThread()); 394 DCHECK(CalledOnValidThread());
393 395
394 ListValue* result = NULL; 396 ListValue* result = NULL;
395 if (transient_->GetList(path, &result)) 397 if (transient_->GetList(WideToUTF16Hack(path), &result))
396 return result; 398 return result;
397 399
398 const Preference* pref = FindPreference(path); 400 const Preference* pref = FindPreference(path);
399 if (!pref) { 401 if (!pref) {
400 DCHECK(false) << "Trying to read an unregistered pref: " << path; 402 DCHECK(false) << "Trying to read an unregistered pref: " << path;
401 return NULL; 403 return NULL;
402 } 404 }
403 const Value* value = pref->GetValue(); 405 const Value* value = pref->GetValue();
404 if (value->GetType() == Value::TYPE_NULL) 406 if (value->GetType() == Value::TYPE_NULL)
405 return NULL; 407 return NULL;
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
466 468
467 void PrefService::ClearPref(const wchar_t* path) { 469 void PrefService::ClearPref(const wchar_t* path) {
468 DCHECK(CalledOnValidThread()); 470 DCHECK(CalledOnValidThread());
469 471
470 const Preference* pref = FindPreference(path); 472 const Preference* pref = FindPreference(path);
471 if (!pref) { 473 if (!pref) {
472 DCHECK(false) << "Trying to clear an unregistered pref: " << path; 474 DCHECK(false) << "Trying to clear an unregistered pref: " << path;
473 return; 475 return;
474 } 476 }
475 477
476 transient_->Remove(path, NULL); 478 string16 path16 = WideToUTF16Hack(path);
479 transient_->Remove(path16, NULL);
477 Value* value; 480 Value* value;
478 bool has_old_value = persistent_->Get(path, &value); 481 bool has_old_value = persistent_->Get(path16, &value);
479 persistent_->Remove(path, NULL); 482 persistent_->Remove(path16, NULL);
480 483
481 if (has_old_value) 484 if (has_old_value)
482 FireObservers(path); 485 FireObservers(path);
483 } 486 }
484 487
485 void PrefService::SetBoolean(const wchar_t* path, bool value) { 488 void PrefService::SetBoolean(const wchar_t* path, bool value) {
486 DCHECK(CalledOnValidThread()); 489 DCHECK(CalledOnValidThread());
487 490
488 const Preference* pref = FindPreference(path); 491 const Preference* pref = FindPreference(path);
489 if (!pref) { 492 if (!pref) {
490 DCHECK(false) << "Trying to write an unregistered pref: " << path; 493 DCHECK(false) << "Trying to write an unregistered pref: " << path;
491 return; 494 return;
492 } 495 }
493 if (pref->type() != Value::TYPE_BOOLEAN) { 496 if (pref->type() != Value::TYPE_BOOLEAN) {
494 DCHECK(false) << "Wrong type for SetBoolean: " << path; 497 DCHECK(false) << "Wrong type for SetBoolean: " << path;
495 return; 498 return;
496 } 499 }
497 500
498 scoped_ptr<Value> old_value(GetPrefCopy(path)); 501 scoped_ptr<Value> old_value(GetPrefCopy(path));
499 bool rv = persistent_->SetBoolean(path, value); 502 bool rv = persistent_->SetBoolean(WideToUTF16Hack(path), value);
500 DCHECK(rv); 503 DCHECK(rv);
501 504
502 FireObserversIfChanged(path, old_value.get()); 505 FireObserversIfChanged(path, old_value.get());
503 } 506 }
504 507
505 void PrefService::SetInteger(const wchar_t* path, int value) { 508 void PrefService::SetInteger(const wchar_t* path, int value) {
506 DCHECK(CalledOnValidThread()); 509 DCHECK(CalledOnValidThread());
507 510
508 const Preference* pref = FindPreference(path); 511 const Preference* pref = FindPreference(path);
509 if (!pref) { 512 if (!pref) {
510 DCHECK(false) << "Trying to write an unregistered pref: " << path; 513 DCHECK(false) << "Trying to write an unregistered pref: " << path;
511 return; 514 return;
512 } 515 }
513 if (pref->type() != Value::TYPE_INTEGER) { 516 if (pref->type() != Value::TYPE_INTEGER) {
514 DCHECK(false) << "Wrong type for SetInteger: " << path; 517 DCHECK(false) << "Wrong type for SetInteger: " << path;
515 return; 518 return;
516 } 519 }
517 520
518 scoped_ptr<Value> old_value(GetPrefCopy(path)); 521 scoped_ptr<Value> old_value(GetPrefCopy(path));
519 bool rv = persistent_->SetInteger(path, value); 522 bool rv = persistent_->SetInteger(WideToUTF16Hack(path), value);
520 DCHECK(rv); 523 DCHECK(rv);
521 524
522 FireObserversIfChanged(path, old_value.get()); 525 FireObserversIfChanged(path, old_value.get());
523 } 526 }
524 527
525 void PrefService::SetReal(const wchar_t* path, double value) { 528 void PrefService::SetReal(const wchar_t* path, double value) {
526 DCHECK(CalledOnValidThread()); 529 DCHECK(CalledOnValidThread());
527 530
528 const Preference* pref = FindPreference(path); 531 const Preference* pref = FindPreference(path);
529 if (!pref) { 532 if (!pref) {
530 DCHECK(false) << "Trying to write an unregistered pref: " << path; 533 DCHECK(false) << "Trying to write an unregistered pref: " << path;
531 return; 534 return;
532 } 535 }
533 if (pref->type() != Value::TYPE_REAL) { 536 if (pref->type() != Value::TYPE_REAL) {
534 DCHECK(false) << "Wrong type for SetReal: " << path; 537 DCHECK(false) << "Wrong type for SetReal: " << path;
535 return; 538 return;
536 } 539 }
537 540
538 scoped_ptr<Value> old_value(GetPrefCopy(path)); 541 scoped_ptr<Value> old_value(GetPrefCopy(path));
539 bool rv = persistent_->SetReal(path, value); 542 bool rv = persistent_->SetReal(WideToUTF16Hack(path), value);
540 DCHECK(rv); 543 DCHECK(rv);
541 544
542 FireObserversIfChanged(path, old_value.get()); 545 FireObserversIfChanged(path, old_value.get());
543 } 546 }
544 547
545 void PrefService::SetString(const wchar_t* path, const std::wstring& value) { 548 void PrefService::SetString(const wchar_t* path, const std::wstring& value) {
546 DCHECK(CalledOnValidThread()); 549 DCHECK(CalledOnValidThread());
547 550
548 const Preference* pref = FindPreference(path); 551 const Preference* pref = FindPreference(path);
549 if (!pref) { 552 if (!pref) {
550 DCHECK(false) << "Trying to write an unregistered pref: " << path; 553 DCHECK(false) << "Trying to write an unregistered pref: " << path;
551 return; 554 return;
552 } 555 }
553 if (pref->type() != Value::TYPE_STRING) { 556 if (pref->type() != Value::TYPE_STRING) {
554 DCHECK(false) << "Wrong type for SetString: " << path; 557 DCHECK(false) << "Wrong type for SetString: " << path;
555 return; 558 return;
556 } 559 }
557 560
558 scoped_ptr<Value> old_value(GetPrefCopy(path)); 561 scoped_ptr<Value> old_value(GetPrefCopy(path));
559 bool rv = persistent_->SetString(path, value); 562 bool rv = persistent_->SetString(WideToUTF16Hack(path),
563 WideToUTF16Hack(value));
560 DCHECK(rv); 564 DCHECK(rv);
561 565
562 FireObserversIfChanged(path, old_value.get()); 566 FireObserversIfChanged(path, old_value.get());
563 } 567 }
564 568
565 DictionaryValue* PrefService::GetMutableDictionary(const wchar_t* path) { 569 DictionaryValue* PrefService::GetMutableDictionary(const wchar_t* path) {
566 DCHECK(CalledOnValidThread()); 570 DCHECK(CalledOnValidThread());
567 571
568 const Preference* pref = FindPreference(path); 572 const Preference* pref = FindPreference(path);
569 if (!pref) { 573 if (!pref) {
570 DCHECK(false) << "Trying to get an unregistered pref: " << path; 574 DCHECK(false) << "Trying to get an unregistered pref: " << path;
571 return NULL; 575 return NULL;
572 } 576 }
573 if (pref->type() != Value::TYPE_DICTIONARY) { 577 if (pref->type() != Value::TYPE_DICTIONARY) {
574 DCHECK(false) << "Wrong type for GetMutableDictionary: " << path; 578 DCHECK(false) << "Wrong type for GetMutableDictionary: " << path;
575 return NULL; 579 return NULL;
576 } 580 }
577 581
578 DictionaryValue* dict = NULL; 582 DictionaryValue* dict = NULL;
579 bool rv = persistent_->GetDictionary(path, &dict); 583 string16 path16 = WideToUTF16Hack(path);
584 bool rv = persistent_->GetDictionary(path16, &dict);
580 if (!rv) { 585 if (!rv) {
581 dict = new DictionaryValue; 586 dict = new DictionaryValue;
582 rv = persistent_->Set(path, dict); 587 rv = persistent_->Set(path16, dict);
583 DCHECK(rv); 588 DCHECK(rv);
584 } 589 }
585 return dict; 590 return dict;
586 } 591 }
587 592
588 ListValue* PrefService::GetMutableList(const wchar_t* path) { 593 ListValue* PrefService::GetMutableList(const wchar_t* path) {
589 DCHECK(CalledOnValidThread()); 594 DCHECK(CalledOnValidThread());
590 595
591 const Preference* pref = FindPreference(path); 596 const Preference* pref = FindPreference(path);
592 if (!pref) { 597 if (!pref) {
593 DCHECK(false) << "Trying to get an unregistered pref: " << path; 598 DCHECK(false) << "Trying to get an unregistered pref: " << path;
594 return NULL; 599 return NULL;
595 } 600 }
596 if (pref->type() != Value::TYPE_LIST) { 601 if (pref->type() != Value::TYPE_LIST) {
597 DCHECK(false) << "Wrong type for GetMutableList: " << path; 602 DCHECK(false) << "Wrong type for GetMutableList: " << path;
598 return NULL; 603 return NULL;
599 } 604 }
600 605
601 ListValue* list = NULL; 606 ListValue* list = NULL;
602 bool rv = persistent_->GetList(path, &list); 607 string16 path16 = WideToUTF16Hack(path);
608 bool rv = persistent_->GetList(path16, &list);
603 if (!rv) { 609 if (!rv) {
604 list = new ListValue; 610 list = new ListValue;
605 rv = persistent_->Set(path, list); 611 rv = persistent_->Set(path16, list);
606 DCHECK(rv); 612 DCHECK(rv);
607 } 613 }
608 return list; 614 return list;
609 } 615 }
610 616
611 Value* PrefService::GetPrefCopy(const wchar_t* path) { 617 Value* PrefService::GetPrefCopy(const wchar_t* path) {
612 DCHECK(CalledOnValidThread()); 618 DCHECK(CalledOnValidThread());
613 619
614 const Preference* pref = FindPreference(path); 620 const Preference* pref = FindPreference(path);
615 DCHECK(pref); 621 DCHECK(pref);
616 return pref->GetValue()->DeepCopy(); 622 return pref->GetValue()->DeepCopy();
617 } 623 }
618 624
619 void PrefService::FireObserversIfChanged(const wchar_t* path, 625 void PrefService::FireObserversIfChanged(const wchar_t* path,
620 const Value* old_value) { 626 const Value* old_value) {
621 Value* new_value = NULL; 627 Value* new_value = NULL;
622 persistent_->Get(path, &new_value); 628 persistent_->Get(WideToUTF16Hack(path), &new_value);
623 if (!old_value->Equals(new_value)) 629 if (!old_value->Equals(new_value))
624 FireObservers(path); 630 FireObservers(path);
625 } 631 }
626 632
627 void PrefService::FireObservers(const wchar_t* path) { 633 void PrefService::FireObservers(const wchar_t* path) {
628 DCHECK(CalledOnValidThread()); 634 DCHECK(CalledOnValidThread());
629 635
630 // Convert path to a std::wstring because the Details constructor requires a 636 // Convert path to a std::wstring because the Details constructor requires a
631 // class. 637 // class.
632 std::wstring path_str(path); 638 std::wstring path_str(path);
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
665 // easier for callers to check for empty list/dict prefs. 671 // easier for callers to check for empty list/dict prefs.
666 if (Value::TYPE_LIST == type_ || Value::TYPE_DICTIONARY == type_) 672 if (Value::TYPE_LIST == type_ || Value::TYPE_DICTIONARY == type_)
667 default_value_.reset(Value::CreateNullValue()); 673 default_value_.reset(Value::CreateNullValue());
668 } 674 }
669 675
670 const Value* PrefService::Preference::GetValue() const { 676 const Value* PrefService::Preference::GetValue() const {
671 DCHECK(NULL != root_pref_) << 677 DCHECK(NULL != root_pref_) <<
672 "Must register pref before getting its value"; 678 "Must register pref before getting its value";
673 679
674 Value* temp_value = NULL; 680 Value* temp_value = NULL;
675 if (root_pref_->Get(name_.c_str(), &temp_value) && 681 if (root_pref_->Get(WideToUTF16Hack(name_), &temp_value) &&
676 temp_value->GetType() == type_) { 682 temp_value->GetType() == type_) {
677 return temp_value; 683 return temp_value;
678 } 684 }
679 685
680 // Pref not found, just return the app default. 686 // Pref not found, just return the app default.
681 return default_value_.get(); 687 return default_value_.get();
682 } 688 }
683 689
684 bool PrefService::Preference::IsDefaultValue() const { 690 bool PrefService::Preference::IsDefaultValue() const {
685 DCHECK(default_value_.get()); 691 DCHECK(default_value_.get());
686 return default_value_->Equals(GetValue()); 692 return default_value_->Equals(GetValue());
687 } 693 }
OLDNEW
« no previous file with comments | « chrome/common/json_value_serializer_unittest.cc ('k') | chrome/renderer/localized_error.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698