- JSで
fetch()を呼ぶ - WindowOrWorkerGlobalScopeFetch::fetch() が呼ばれる(たぶん)
- IDLで呼び出し部分を自動生成しているらしい?
- WebCore::doFetch() が呼ばれる
- doFetch() が FetchRequest::create() を読んで FetchRequest のインスタンスを作成
- create() は initializeWith() を呼ぶ
- initializeWith() は setBody() に init.body を渡して呼ぶ
- この init は WindowOrWorkerGlobalScopeFetch::fetch() に渡されたもので、生成部分は自動生成っぽい
4. WindowOr(略) では FetchRequest::Init となっているが、 これは FetchRequest クラスでusing Init = FetchRequestInitしているからであり、定義としては FetchRequestInit.h である- bodyがoptionalなんですが
- setBody() が(FetchRequestが継承しているFetchBodyOwnerのメソッドである)extractBody() を呼ぶ
- (initializeWith() は2つあるが、ここではStringを引数として取る方を読んだ)
- FetchBody::extract() で FetchBody を作成して FetchBodyOwner::m_body に代入する
3. ここで m_bodyはVariant で、value (== init.body) の値に基づいて値が代入される
- FetchResponse::fetch() を呼ぶ
- m_loader.start() が本質っぽさある
response.bytes() を呼ぶとどうなる?
- FetchBodyOwner::bytes() が呼ばれ、 m_body→bytes() を呼ぶ
- FetchBodyOwner::m_body は FetchBody
- FetchBody::consume() がm_body (Variant) の値を元に consumeFooBar() を呼んでreturn