| Index: talk/app/webrtc/dtlsidentitystore_unittest.cc | 
| diff --git a/talk/app/webrtc/dtlsidentitystore_unittest.cc b/talk/app/webrtc/dtlsidentitystore_unittest.cc | 
| index c0b204a85f9d93de9cff2ae1059fd21969a7dea3..acf054c8868ff1e17194b723050279462576c36d 100644 | 
| --- a/talk/app/webrtc/dtlsidentitystore_unittest.cc | 
| +++ b/talk/app/webrtc/dtlsidentitystore_unittest.cc | 
| @@ -32,13 +32,13 @@ | 
| #include "webrtc/base/logging.h" | 
| #include "webrtc/base/ssladapter.h" | 
|  | 
| -using webrtc::DtlsIdentityStore; | 
| +using webrtc::DtlsIdentityStoreImpl; | 
| using webrtc::WebRtcSessionDescriptionFactory; | 
|  | 
| static const int kTimeoutMs = 10000; | 
|  | 
| class MockDtlsIdentityRequestObserver : | 
| -    public webrtc::DTLSIdentityRequestObserver { | 
| +    public webrtc::DtlsIdentityRequestObserver { | 
| public: | 
| MockDtlsIdentityRequestObserver() | 
| : call_back_called_(false), last_request_success_(false) {} | 
| @@ -81,8 +81,8 @@ class DtlsIdentityStoreTest : public testing::Test { | 
| protected: | 
| DtlsIdentityStoreTest() | 
| : worker_thread_(new rtc::Thread()), | 
| -        store_(new DtlsIdentityStore(rtc::Thread::Current(), | 
| -                                     worker_thread_.get())), | 
| +        store_(new DtlsIdentityStoreImpl(rtc::Thread::Current(), | 
| +                                         worker_thread_.get())), | 
| observer_( | 
| new rtc::RefCountedObject<MockDtlsIdentityRequestObserver>()) { | 
| CHECK(worker_thread_->Start()); | 
| @@ -98,30 +98,55 @@ class DtlsIdentityStoreTest : public testing::Test { | 
| } | 
|  | 
| rtc::scoped_ptr<rtc::Thread> worker_thread_; | 
| -  rtc::scoped_ptr<DtlsIdentityStore> store_; | 
| +  rtc::scoped_ptr<DtlsIdentityStoreImpl> store_; | 
| rtc::scoped_refptr<MockDtlsIdentityRequestObserver> observer_; | 
| }; | 
|  | 
| -TEST_F(DtlsIdentityStoreTest, RequestIdentitySuccess) { | 
| -  EXPECT_TRUE_WAIT(store_->HasFreeIdentityForTesting(), kTimeoutMs); | 
| +TEST_F(DtlsIdentityStoreTest, RequestIdentitySuccessRSA) { | 
| +  EXPECT_TRUE_WAIT(store_->HasFreeIdentityForTesting(rtc::KT_RSA), kTimeoutMs); | 
|  | 
| -  store_->RequestIdentity(observer_.get()); | 
| +  store_->RequestIdentity(rtc::KT_RSA, observer_.get()); | 
| EXPECT_TRUE_WAIT(observer_->LastRequestSucceeded(), kTimeoutMs); | 
|  | 
| -  EXPECT_TRUE_WAIT(store_->HasFreeIdentityForTesting(), kTimeoutMs); | 
| +  EXPECT_TRUE_WAIT(store_->HasFreeIdentityForTesting(rtc::KT_RSA), kTimeoutMs); | 
|  | 
| observer_->Reset(); | 
|  | 
| // Verifies that the callback is async when a free identity is ready. | 
| -  store_->RequestIdentity(observer_.get()); | 
| +  store_->RequestIdentity(rtc::KT_RSA, observer_.get()); | 
| EXPECT_FALSE(observer_->call_back_called()); | 
| EXPECT_TRUE_WAIT(observer_->LastRequestSucceeded(), kTimeoutMs); | 
| } | 
|  | 
| -TEST_F(DtlsIdentityStoreTest, DeleteStoreEarlyNoCrash) { | 
| -  EXPECT_FALSE(store_->HasFreeIdentityForTesting()); | 
| +TEST_F(DtlsIdentityStoreTest, RequestIdentitySuccessECDSA) { | 
| +  // Since store currently does not preemptively generate free ECDSA identities | 
| +  // we do not invoke HasFreeIdentityForTesting between requests. | 
|  | 
| -  store_->RequestIdentity(observer_.get()); | 
| +  store_->RequestIdentity(rtc::KT_ECDSA, observer_.get()); | 
| +  EXPECT_TRUE_WAIT(observer_->LastRequestSucceeded(), kTimeoutMs); | 
| + | 
| +  observer_->Reset(); | 
| + | 
| +  // Verifies that the callback is async when a free identity is ready. | 
| +  store_->RequestIdentity(rtc::KT_ECDSA, observer_.get()); | 
| +  EXPECT_FALSE(observer_->call_back_called()); | 
| +  EXPECT_TRUE_WAIT(observer_->LastRequestSucceeded(), kTimeoutMs); | 
| +} | 
| + | 
| +TEST_F(DtlsIdentityStoreTest, DeleteStoreEarlyNoCrashRSA) { | 
| +  EXPECT_FALSE(store_->HasFreeIdentityForTesting(rtc::KT_RSA)); | 
| + | 
| +  store_->RequestIdentity(rtc::KT_RSA, observer_.get()); | 
| +  store_.reset(); | 
| + | 
| +  worker_thread_->Stop(); | 
| +  EXPECT_FALSE(observer_->call_back_called()); | 
| +} | 
| + | 
| +TEST_F(DtlsIdentityStoreTest, DeleteStoreEarlyNoCrashECDSA) { | 
| +  EXPECT_FALSE(store_->HasFreeIdentityForTesting(rtc::KT_ECDSA)); | 
| + | 
| +  store_->RequestIdentity(rtc::KT_ECDSA, observer_.get()); | 
| store_.reset(); | 
|  | 
| worker_thread_->Stop(); | 
|  |