PassRefPtrWillBeRawPtr<FontFace> FontFace::create(ExecutionContext* context, const AtomicString& family, StringOrArrayBufferOrArrayBufferView& source, const FontFaceDescriptors& descriptors) { if (source.isString()) return create(context, family, source.getAsString(), descriptors); if (source.isArrayBuffer()) return create(context, family, source.getAsArrayBuffer(), descriptors); if (source.isArrayBufferView()) return create(context, family, source.getAsArrayBufferView(), descriptors); ASSERT_NOT_REACHED(); return nullptr; }
v8::Local<v8::Value> toV8(const StringOrArrayBufferOrArrayBufferView& impl, v8::Local<v8::Object> creationContext, v8::Isolate* isolate) { switch (impl.m_type) { case StringOrArrayBufferOrArrayBufferView::SpecificTypeNone: return v8::Null(isolate); case StringOrArrayBufferOrArrayBufferView::SpecificTypeString: return v8String(isolate, impl.getAsString()); case StringOrArrayBufferOrArrayBufferView::SpecificTypeArrayBuffer: return toV8(impl.getAsArrayBuffer(), creationContext, isolate); case StringOrArrayBufferOrArrayBufferView::SpecificTypeArrayBufferView: return toV8(impl.getAsArrayBufferView(), creationContext, isolate); default: ASSERT_NOT_REACHED(); } return v8::Local<v8::Value>(); }