TODO(sligocki): Find a way to forward declare FileSystem::InputFile.
TODO(skerner): include image_spriter.pb.h is needed to allow use of enum ImageFormat. Break this dependency and remove the include.
TODO(jmarantz): allow configuration of this option.
TODO(jmarantz): allow a URL-based mechanism to flush cache, even if we implement it by simply writing the cache.flush file so other servers can see it. Note that using shared-memory is not a great plan because we need the cache-invalidation to persist across server restart.
TODO(sligocki): StringPiece(NULL) seems fragile because what it is or how it's treated is not docutmented.
TODO(sligocki): Find Javascript equivalents and list them or even change our names to be consistent.
TODO(mdsteele): Rename these methods to e.g. InsertNodeBeforeNode. This and downstream filters will then see inserted elements but upstream filters will not. Note: In Javascript the first is called insertBefore and takes the arg in the opposite order. Note: new_node must not already be in the DOM.
TODO(jmaessen): Does this architecture make sense when we have multiple scripts on a page and the ability to move code around a bunch? How do we maintain JS context in that setting?
TODO(abliss): add an ability to block writes for arbitrarily long, to enable testing resilience to concurrency problems with real filesystems.
TODO(jmarantz): make threadsafe.
TODO(jmaessen): remove redundancy.
TODO(jmarantz): These abstractions are not satisfactory long-term where we want to have driver-lifetime in tests be reflective of how servers work. But for now we use these accessors.
TODO(jmarantz): add support for controlling TTL on failures.
TODO(jmarantz): rename this class to RequestContext. This extends class HtmlParse (which should renamed HtmlContext) by providing context for rewriting resources (css, js, images).
TODO(abliss): actually do this.
TODO(sligocki): GoogleString -> GoogleUrl
TODO(jmarantz): One possibly improvement is to bake this functionality into UrlEscaper, changing its interface to accept arbitrary numbers of pieces in & out. However, that would change an interface that's used in multiple places, so this is left as a
TODO.