In my opinion, we've already reached a point where there is no technical dependency on either of those things. In deference to convention, a lot of apps we see will choose to use such things for some time.
To elaborate, an Ethereum node can bootstrap itself with nothing more than a clue about where it can find a peer. There are lots of ways to do that without involving DNS or HTTP. If you've got Ethereum, you can have a name service. If you've got a name service, you can have IPFS ... and so on.
In practice, developers are faced with decisions about the system requirements. For example, insisting that the user has both an Ethereum full node and an IPFS node (or similar) may alienate too many users to be commercially viable in the near term. Consequently, a lot of the apps we see use a server-side assist. That contains the system requirements to fair assumptions about the user: a browser and an internet connection. It ends up using DNS and HTTP.
In my opinion, the current state of affairs is analogous to the early days of the internet when the TCP/IP stack and a browser wasn't something to take for granted. Users had to set it up. It wasn't something my mom could set up.
When it's a safe bet that the users will have a stack of distributed services on their end, we'll start to see more fully decentralized apps. It's anyone's guess which staple services will rise to the level of standard equipment. I don't see how DNS or HTTP are required from a technical standpoint, but they are useful.
Great question. It will be interesting to see what others think about this.