Home | History | Annotate | Download | only in components
      1 This directory is for components that have the Content Module as the
      2 uppermost layer they depend on.  They may depend only on the Content
      3 API (content/public) and on lower layers (e.g. base/, net/, ipc/
      4 etc.).
      5 
      6 Components that have bits of code that need to live in different
      7 processes (e.g. some code in the browser process, some in the renderer
      8 process, etc.) should separate the code into different subdirectories.
      9 Hence for a component named 'foo' you might end up with a structure
     10 like the following:
     11 
     12 components/foo          - DEPS, OWNERS, foo.gypi
     13 components/foo/browser  - code that needs the browser process
     14 components/foo/common   - for e.g. IPC constants and such
     15 components/foo/renderer - code that needs renderer process
     16 
     17 These subdirectories should have DEPS files with the relevant
     18 restrictions in place, i.e. only components/*/browser should
     19 be allowed to #include from content/public/browser.
     20 
     21 Note that there may also be an 'android' subdir, with a Java source
     22 code structure underneath it where the package name is
     23 org.chromium.components.foo, and with subdirs after 'foo'
     24 to illustrate process, e.g. 'browser' or 'renderer':
     25 
     26 components/foo/android/OWNERS, DEPS
     27 components/foo/android/java/src/org/chromium/components/foo/browser/
     28 components/foo/android/javatests/src/org/chromium/components/foo/browser/
     29 
     30 Code in a component should be placed in a namespace corresponding to
     31 the name of the component; e.g. for a component living in
     32 //components/foo, code in that component should be in the foo::
     33 namespace. Note that it used to be the rule that all code under
     34 //components should be in the components:: namespace; this is being
     35 phased out.
     36