It should be pretty straightforward to make a new EncodedValue specialization for PluginData, then memoize inside PluginData where it calls out to the platform-specific implementation of getPluginInfo(). This should only happen once per page and when Page::refreshPlugins blows away cached info.
BTW: this API is being addressed now, because it is used by the google analytics urchin. So, basically every page hits it once, then makes a network request with a URL based on it.
Created attachment 229012 [details] the patch
Attachment 229012 [details] did not pass style-queue: ERROR: Source/WebCore/replay/SerializationMethods.h:103: The parameter type should use PassRefPtr instead of RefPtr. [readability/pass_ptr] [5] ERROR: Source/WebCore/replay/SerializationMethods.cpp:485: The parameter type should use PassRefPtr instead of RefPtr. [readability/pass_ptr] [5] Total errors found: 2 in 14 files If any of these errors are false positives, please file a bug against check-webkit-style.
Before landing I'm going to fix alphabetical sorting in SerializationMethods
Created attachment 229070 [details] reordered encode/decode methods
Attachment 229070 [details] did not pass style-queue: ERROR: Source/WebCore/replay/SerializationMethods.h:103: The parameter type should use PassRefPtr instead of RefPtr. [readability/pass_ptr] [5] ERROR: Source/WebCore/replay/SerializationMethods.cpp:456: The parameter type should use PassRefPtr instead of RefPtr. [readability/pass_ptr] [5] Total errors found: 2 in 14 files If any of these errors are false positives, please file a bug against check-webkit-style.
Comment on attachment 229070 [details] reordered encode/decode methods Clearing flags on attachment: 229070 Committed r167085: <http://trac.webkit.org/changeset/167085>
All reviewed patches have been landed. Closing bug.