Index: chrome/browser/ui/webui/options/certificate_manager_handler.cc |
diff --git a/chrome/browser/ui/webui/options/certificate_manager_handler.cc b/chrome/browser/ui/webui/options/certificate_manager_handler.cc |
index b08227fa3bf0a72ac2820f2756ad258ac99a5722..8064c9430da68f12ea059515bb058699e4bdc7db 100644 |
--- a/chrome/browser/ui/webui/options/certificate_manager_handler.cc |
+++ b/chrome/browser/ui/webui/options/certificate_manager_handler.cc |
@@ -35,8 +35,6 @@ |
#if defined(OS_CHROMEOS) |
#include "chrome/browser/policy/profile_policy_connector.h" |
#include "chrome/browser/policy/profile_policy_connector_factory.h" |
-#include "chromeos/dbus/cryptohome_client.h" |
-#include "chromeos/dbus/dbus_thread_manager.h" |
#endif |
using content::BrowserThread; |
@@ -290,9 +288,7 @@ CertificateManagerHandler::CertificateManagerHandler() |
: use_hardware_backed_(false), |
file_access_provider_(new FileAccessProvider()), |
cert_id_map_(new CertIdMap), |
- weak_ptr_factory_(this) { |
- certificate_manager_model_.reset(new CertificateManagerModel(this)); |
-} |
+ weak_ptr_factory_(this) {} |
CertificateManagerHandler::~CertificateManagerHandler() { |
} |
@@ -477,13 +473,11 @@ void CertificateManagerHandler::RegisterMessages() { |
"populateCertificateManager", |
base::Bind(&CertificateManagerHandler::Populate, |
base::Unretained(this))); |
+} |
-#if defined(OS_CHROMEOS) |
- web_ui()->RegisterMessageCallback( |
- "checkTpmTokenReady", |
- base::Bind(&CertificateManagerHandler::CheckTpmTokenReady, |
- base::Unretained(this))); |
-#endif |
+void CertificateManagerHandler::CertificateManagerModelReady() { |
+ web_ui()->CallJavascriptFunction("CertificateManager.onModelReady"); |
+ certificate_manager_model_->Refresh(); |
} |
void CertificateManagerHandler::CertificatesRefreshed() { |
@@ -985,7 +979,17 @@ void CertificateManagerHandler::Delete(const ListValue* args) { |
} |
void CertificateManagerHandler::Populate(const ListValue* args) { |
- certificate_manager_model_->Refresh(); |
+ if (certificate_manager_model_) { |
+ if (certificate_manager_model_->is_ready()) { |
+ // Re-run the webui initialization. |
+ CertificateManagerModelReady(); |
+ } |
+ // else wait for CertificateManagerModelReady to be called through the |
+ // observer, as the init is still pending. |
+ } else { |
+ certificate_manager_model_.reset( |
+ new CertificateManagerModel(Profile::FromWebUI(web_ui()), this)); |
+ } |
} |
void CertificateManagerHandler::PopulateTree( |
@@ -1100,25 +1104,6 @@ void CertificateManagerHandler::ShowImportErrors( |
cert_error_list); |
} |
-#if defined(OS_CHROMEOS) |
-void CertificateManagerHandler::CheckTpmTokenReady(const ListValue* args) { |
- chromeos::CryptohomeClient* cryptohome_client = |
- chromeos::DBusThreadManager::Get()->GetCryptohomeClient(); |
- cryptohome_client->Pkcs11IsTpmTokenReady( |
- base::Bind(&CertificateManagerHandler::CheckTpmTokenReadyInternal, |
- weak_ptr_factory_.GetWeakPtr())); |
-} |
- |
-void CertificateManagerHandler::CheckTpmTokenReadyInternal( |
- chromeos::DBusMethodCallStatus call_status, |
- bool is_tpm_token_ready) { |
- base::FundamentalValue ready( |
- call_status == chromeos::DBUS_METHOD_CALL_SUCCESS && is_tpm_token_ready); |
- web_ui()->CallJavascriptFunction("CertificateManager.onCheckTpmTokenReady", |
- ready); |
-} |
-#endif |
- |
gfx::NativeWindow CertificateManagerHandler::GetParentWindow() const { |
return web_ui()->GetWebContents()->GetView()->GetTopLevelNativeWindow(); |
} |