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

Unified Diff: chrome/browser/extensions/extension_tts_api_controller_unittest.cc

Issue 8437080: Fix crash when TTS utterances are queued on shutdown. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 9 years, 1 month 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/extensions/extension_tts_api_controller_unittest.cc
===================================================================
--- chrome/browser/extensions/extension_tts_api_controller_unittest.cc (revision 0)
+++ chrome/browser/extensions/extension_tts_api_controller_unittest.cc (revision 0)
@@ -0,0 +1,63 @@
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Unit tests for the TTS API Controller.
+
+#include "testing/gtest/include/gtest/gtest.h"
+
+#include "base/values.h"
+#include "chrome/browser/extensions/extension_tts_api_controller.h"
+#include "chrome/browser/extensions/extension_tts_api_platform.h"
+
+class ExtensionTtsApiControllerTest : public testing::Test {
+};
+
+// Platform Tts implementation that does nothing.
+class DummyExtensionTtsPlatformImpl : public ExtensionTtsPlatformImpl {
+ public:
+ DummyExtensionTtsPlatformImpl() {}
+ virtual ~DummyExtensionTtsPlatformImpl() {}
+ virtual bool PlatformImplAvailable() { return true; }
+ virtual bool Speak(
+ int utterance_id,
+ const std::string& utterance,
+ const std::string& lang,
+ const UtteranceContinuousParameters& params) {
+ return true;
+ }
+ virtual bool StopSpeaking() { return true; }
+ virtual bool SendsEvent(TtsEventType event_type) { return false; }
+ virtual std::string gender() { return std::string(); }
+ virtual std::string error() { return std::string(); }
+ virtual void clear_error() {}
+ virtual void set_error(const std::string& error) {}
+};
+
+// Subclass of ExtensionTtsController with a public ctor and dtor.
+class TestableExtensionTtsController : public ExtensionTtsController {
+ public:
+ TestableExtensionTtsController() {}
+ virtual ~TestableExtensionTtsController() {}
+};
+
+TEST_F(ExtensionTtsApiControllerTest, TestTtsControllerShutdown) {
+ DummyExtensionTtsPlatformImpl platform_impl;
+ TestableExtensionTtsController* controller =
+ new TestableExtensionTtsController();
+ controller->SetPlatformImpl(&platform_impl);
+
+ Utterance* utterance1 = new Utterance(NULL);
+ utterance1->set_can_enqueue(true);
+ utterance1->set_src_id(1);
+ controller->SpeakOrEnqueue(utterance1);
+
+ Utterance* utterance2 = new Utterance(NULL);
+ utterance2->set_can_enqueue(true);
+ utterance2->set_src_id(2);
+ controller->SpeakOrEnqueue(utterance2);
+
+ // Make sure that deleting the controller when there are pending
+ // utterances doesn't cause a crash.
+ delete controller;
+}
Property changes on: chrome/browser/extensions/extension_tts_api_controller_unittest.cc
___________________________________________________________________
Added: svn:eol-style
+ LF

Powered by Google App Engine
This is Rietveld 408576698