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

Side by Side Diff: Source/modules/speech/SpeechRecognitionController.cpp

Issue 960223002: Detach SpeechRecognitionController upon page detach. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Adjust assert and allow repeated observer detaches Created 5 years, 10 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 /* 1 /*
2 * Copyright (C) 2012 Google Inc. All rights reserved. 2 * Copyright (C) 2012 Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions 5 * modification, are permitted provided that the following conditions
6 * are met: 6 * are met:
7 * * Redistributions of source code must retain the above copyright 7 * * Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer. 8 * notice, this list of conditions and the following disclaimer.
9 * * Redistributions in binary form must reproduce the above copyright 9 * * Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the 10 * notice, this list of conditions and the following disclaimer in the
(...skipping 15 matching lines...) Expand all
26 #include "config.h" 26 #include "config.h"
27 #include "modules/speech/SpeechRecognitionController.h" 27 #include "modules/speech/SpeechRecognitionController.h"
28 28
29 namespace blink { 29 namespace blink {
30 30
31 const char* SpeechRecognitionController::supplementName() 31 const char* SpeechRecognitionController::supplementName()
32 { 32 {
33 return "SpeechRecognitionController"; 33 return "SpeechRecognitionController";
34 } 34 }
35 35
36 SpeechRecognitionController::SpeechRecognitionController(PassOwnPtr<SpeechRecogn itionClient> client) 36 SpeechRecognitionController::SpeechRecognitionController(Page* page, PassOwnPtr< SpeechRecognitionClient> client)
37 : m_client(client) 37 : PageLifecycleObserver(page)
38 , m_client(client)
38 { 39 {
39 } 40 }
40 41
41 SpeechRecognitionController::~SpeechRecognitionController() 42 SpeechRecognitionController::~SpeechRecognitionController()
42 { 43 {
43 // FIXME: Call m_client->pageDestroyed(); once we have implemented a client. 44 // FIXME: Call m_client->pageDestroyed(); once we have implemented a client.
44 } 45 }
45 46
46 PassOwnPtrWillBeRawPtr<SpeechRecognitionController> SpeechRecognitionController: :create(PassOwnPtr<SpeechRecognitionClient> client) 47 DEFINE_TRACE(SpeechRecognitionController)
47 { 48 {
48 return adoptPtrWillBeNoop(new SpeechRecognitionController(client)); 49 WillBeHeapSupplement<Page>::trace(visitor);
50 PageLifecycleObserver::trace(visitor);
51 }
52
53 PassOwnPtrWillBeRawPtr<SpeechRecognitionController> SpeechRecognitionController: :create(Page* page, PassOwnPtr<SpeechRecognitionClient> client)
54 {
55 return adoptPtrWillBeNoop(new SpeechRecognitionController(page, client));
56 }
57
58 SpeechRecognitionController* SpeechRecognitionController::from(Page* page)
59 {
60 return static_cast<SpeechRecognitionController*>(WillBeHeapSupplement<Page>: :from(page, supplementName()));
49 } 61 }
50 62
51 void provideSpeechRecognitionTo(Page& page, PassOwnPtr<SpeechRecognitionClient> client) 63 void provideSpeechRecognitionTo(Page& page, PassOwnPtr<SpeechRecognitionClient> client)
52 { 64 {
53 SpeechRecognitionController::provideTo(page, SpeechRecognitionController::su pplementName(), SpeechRecognitionController::create(client)); 65 SpeechRecognitionController::provideTo(page, SpeechRecognitionController::su pplementName(), SpeechRecognitionController::create(&page, client));
66 }
67
68 void SpeechRecognitionController::start(SpeechRecognition* recognition, const Sp eechGrammarList* grammars, const String& lang, bool continuous, bool interimResu lts, unsigned long maxAlternatives, MediaStreamTrack* audioTrack)
69 {
70 if (!page())
71 return;
72
73 m_client->start(recognition, grammars, lang, continuous, interimResults, max Alternatives, audioTrack);
74 }
75
76 void SpeechRecognitionController::stop(SpeechRecognition* recognition)
77 {
78 if (!page())
79 return;
80
81 m_client->stop(recognition);
82 }
83
84 void SpeechRecognitionController::abort(SpeechRecognition* recognition)
85 {
86 if (!page())
87 return;
88
89 m_client->abort(recognition);
54 } 90 }
55 91
56 } // namespace blink 92 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698