There are a lot of cases that an interface in WebIDL uses another interface. However, in Chrome code generation we add a include line to the generated code like FocusEventInit.h (https://cs.chromium.org/chromium/src/out/Debug/gen/blink/core/events/FocusEventInit.h?sq=package:chromium&dr=CSs) which includes EventTarget.h as oppose to only forward declare the class in the header file.
Forward declaring the class when it's possible instead of including allowa us to have some circular dependency in WebIDL that is not currently possible.
Comment 1 by kochi@chromium.org
, Nov 7 2016