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

Side by Side Diff: third_party/WebKit/Source/modules/webmidi/MIDIAccessInitializer.cpp

Issue 2404443002: Web MIDI: use midi_service.mojom for media::midi::Result (Closed)
Patch Set: fix layout test Created 4 years, 2 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 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 "modules/webmidi/MIDIAccessInitializer.h" 5 #include "modules/webmidi/MIDIAccessInitializer.h"
6 6
7 #include "bindings/core/v8/ScriptPromise.h" 7 #include "bindings/core/v8/ScriptPromise.h"
8 #include "bindings/core/v8/ScriptPromiseResolver.h" 8 #include "bindings/core/v8/ScriptPromiseResolver.h"
9 #include "core/dom/DOMException.h" 9 #include "core/dom/DOMException.h"
10 #include "core/dom/Document.h" 10 #include "core/dom/Document.h"
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
78 // are delegated to MIDIAccess. See constructor of MIDIAccess. 78 // are delegated to MIDIAccess. See constructor of MIDIAccess.
79 NOTREACHED(); 79 NOTREACHED();
80 } 80 }
81 81
82 void MIDIAccessInitializer::didSetOutputPortState(unsigned portIndex, 82 void MIDIAccessInitializer::didSetOutputPortState(unsigned portIndex,
83 PortState state) { 83 PortState state) {
84 // See comments on didSetInputPortState(). 84 // See comments on didSetInputPortState().
85 NOTREACHED(); 85 NOTREACHED();
86 } 86 }
87 87
88 void MIDIAccessInitializer::didStartSession(bool success, 88 void MIDIAccessInitializer::didStartSession(media::midi::Result result) {
89 const String& error,
90 const String& message) {
91 DCHECK(m_accessor); 89 DCHECK(m_accessor);
92 if (success) { 90 // We would also have AbortError and SecurityError according to the spec.
93 resolve(MIDIAccess::create(std::move(m_accessor), 91 // SecurityError is handled in onPermission(s)Updated().
94 m_options.hasSysex() && m_options.sysex(), 92 switch (result) {
95 m_portDescriptors, getExecutionContext())); 93 case media::midi::Result::NOT_INITIALIZED:
96 } else { 94 break;
97 // The spec says the name is one of 95 case media::midi::Result::OK:
98 // - SecurityError 96 return resolve(MIDIAccess::create(
99 // - AbortError 97 std::move(m_accessor), m_options.hasSysex() && m_options.sysex(),
100 // - InvalidStateError 98 m_portDescriptors, getExecutionContext()));
101 // - NotSupportedError 99 case media::midi::Result::NOT_SUPPORTED:
102 // TODO(toyoshim): Do not rely on |error| string. Instead an enum 100 return reject(DOMException::create(NotSupportedError));
103 // representing an ExceptionCode should be defined and deliverred. 101 case media::midi::Result::INITIALIZATION_ERROR:
104 ExceptionCode ec = InvalidStateError; 102 return reject(DOMException::create(
105 if (error == DOMException::getErrorName(SecurityError)) { 103 InvalidStateError, "Platform dependent initialization failed."));
106 ec = SecurityError;
107 } else if (error == DOMException::getErrorName(AbortError)) {
108 ec = AbortError;
109 } else if (error == DOMException::getErrorName(InvalidStateError)) {
110 ec = InvalidStateError;
111 } else if (error == DOMException::getErrorName(NotSupportedError)) {
112 ec = NotSupportedError;
113 }
114 reject(DOMException::create(ec, message));
115 } 104 }
105 NOTREACHED();
106 reject(DOMException::create(InvalidStateError,
107 "Unknown internal error occurred."));
116 } 108 }
117 109
118 ExecutionContext* MIDIAccessInitializer::getExecutionContext() const { 110 ExecutionContext* MIDIAccessInitializer::getExecutionContext() const {
119 return getScriptState()->getExecutionContext(); 111 return getScriptState()->getExecutionContext();
120 } 112 }
121 113
122 void MIDIAccessInitializer::onPermissionsUpdated(PermissionStatus status) { 114 void MIDIAccessInitializer::onPermissionsUpdated(PermissionStatus status) {
123 m_permissionService.reset(); 115 m_permissionService.reset();
124 if (status == PermissionStatus::GRANTED) 116 if (status == PermissionStatus::GRANTED)
125 m_accessor->startSession(); 117 m_accessor->startSession();
126 else 118 else
127 reject(DOMException::create(SecurityError)); 119 reject(DOMException::create(SecurityError));
128 } 120 }
129 121
130 void MIDIAccessInitializer::onPermissionUpdated(PermissionStatus status) { 122 void MIDIAccessInitializer::onPermissionUpdated(PermissionStatus status) {
131 m_permissionService.reset(); 123 m_permissionService.reset();
132 if (status == PermissionStatus::GRANTED) 124 if (status == PermissionStatus::GRANTED)
133 m_accessor->startSession(); 125 m_accessor->startSession();
134 else 126 else
135 reject(DOMException::create(SecurityError)); 127 reject(DOMException::create(SecurityError));
136 } 128 }
137 129
138 } // namespace blink 130 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698