File: nsDocShellEditorData.h

package info (click to toggle)
mozilla-firefox 1.0.4-2sarge17
  • links: PTS
  • area: main
  • in suites: sarge
  • size: 255,356 kB
  • ctags: 267,207
  • sloc: cpp: 1,623,961; ansic: 792,828; xml: 85,380; makefile: 41,934; perl: 27,802; asm: 14,884; sh: 14,807; cs: 4,507; python: 4,398; java: 4,004; yacc: 1,380; lex: 409; pascal: 354; php: 244; csh: 132; objc: 73; ada: 44; sql: 4
file content (86 lines) | stat: -rw-r--r-- 2,770 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
 *
 * The contents of this file are subject to the Mozilla Public
 * License Version 1.1 (the "License"); you may not use this file
 * except in compliance with the License. You may obtain a copy of
 * the License at http://www.mozilla.org/MPL/
 * 
 * Software distributed under the License is distributed on an "AS
 * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
 * implied. See the License for the specific language governing
 * rights and limitations under the License.
 * 
 * The Original Code is the Mozilla browser.
 * 
 * The Initial Developer of the Original Code is Netscape
 * Communications, Inc.  Portions created by Netscape are
 * Copyright (C) 1999, Mozilla.  All Rights Reserved.
 * 
 * Contributor(s):
 *   Simon Fraser <sfraser@netscape.com>
 */
#ifndef nsDocShellEditorData_h__
#define nsDocShellEditorData_h__

#ifndef nsCOMPtr_h___
#include "nsCOMPtr.h"
#endif

#ifndef __gen_nsIDocShell_h__
#include "nsIDocShell.h"
#endif

#ifndef __gen_nsIEditingSession_h__
#include "nsIEditingSession.h"
#endif


#include "nsIEditor.h"


// a non-XPCOM class that is used to store per-docshell editor-related
// data.

class nsDocShellEditorData
{
public:

              nsDocShellEditorData(nsIDocShell* inOwningDocShell);
              ~nsDocShellEditorData();
              

              // set a flag to say this frame should be editable when the next url loads
  nsresult    MakeEditable(PRBool inWaitForUriLoad);
  
  PRBool      GetEditable();
  
              // actually create the editor for this docShell
  nsresult    CreateEditor();
  
              // get the editing session. The editing session always lives on the content
              // root docShell; this call may crawl up the frame tree to find it.
  nsresult    GetEditingSession(nsIEditingSession **outEditingSession);
  
              // get the editor for this docShell. May return null but NS_OK
  nsresult    GetEditor(nsIEditor **outEditor);
  
              // set the editor on this docShell
  nsresult    SetEditor(nsIEditor *inEditor);

protected:              

  nsresult    GetOrCreateEditingSession(PRBool inAllowCreation, nsIEditingSession **outEditingSession);

protected:

  nsIDocShell*                mDocShell;        // the doc shell that owns us. Weak ref, since it always outlives us.  
  
  nsCOMPtr<nsIEditingSession> mEditingSession;  // only present for the content root docShell. Session is owned here

  PRBool                      mMakeEditable;    // indicates whether to make an editor after a url load
  nsCOMPtr<nsIEditor>         mEditor;          // if this frame is editable, store editor here. Editor is owned here.

};


#endif // nsDocShellEditorData_h__